題目連結:
題目大意:
輸入第一列給定一正整數 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;如果遇到「.」則什麼都不做。
掃完之後,統計期間有多少個成功配對數即是所求。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。