前往
大廳
主題

ZeroJudge - a565: 2.p&q的邂逅 解題心得

Not In My Back Yard | 2020-10-30 12:00:01 | 巴幣 12 | 人氣 326

題目連結:


題目大意:
輸入第一列給定一正整數 n ,代表有 n 筆測試資料,每筆佔一列。每列測資給定一個只由「p」(代表男生)、「q」(代表女生)和「.」(代表空地)所組成的字串。

對於每對「pq」算作一個配對,配完之後該配對會從字串中移除且每對「pq」的 p 和 q 之間可以隔任意數量的「.」。而「pp」、「qq」以及「qp」不算做一個配對。

試問最多可以配幾對配對?



範例輸入:
2
..p..p.p...q.q.
.p...qq..p.pq.p..q.qpp..qpq


範例輸出:
2
6


解題思維:
可以看到本題可以轉成字串裡有多少個合法的括號匹配(例如一對的「()」),而我們可以參照這題的想法:

掃過字串,期間我們統計 p 的數量。遇到一個 p 當然 p 的數量就 + 1;遇到 q 則判斷 p 有沒有大於 1 ,有就將 p 的數量 - 1 並將成功配對數 + 1;如果遇到「.」則什麼都不做。

掃完之後,統計期間有多少個成功配對數即是所求。



因為這題的輸入量不小,所以可以最佳化一下輸出入。簡單一點的最佳化如這題,進階一點的如這題




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作