前往
大廳
主題

ZeroJudge - c657: 最長連續字母 解題心得

Not In My Back Yard | 2020-10-29 00:00:01 | 巴幣 0 | 人氣 482

題目連結:


題目大意:
輸入有多列,每列給定一字串(只包含小寫字母)。求該字串中連續出現最多次的字母為何?如果有多個連續出現最多次的,則請找到最早出現的字母。



範例輸入:
abbcc
cciiiiiiiixxxxxxxxxxxxguuuuuuufugpccccccc


範例輸出:
b 2
x 12


解題思維:
用一個整數變數 C 當作計數器(一開始設為 1)、一個整數變數 max 當作最大值,以及一個字元變數 T 儲存最大值發生時的字元(即所求)。

跳過字串第一個字元從第二個字元開始,對於第 i 個字元,看第 i - 1 個字元是否與它相同。

如果是,則計數器 C 加 1 ;反之,判斷 C 的值跟 max 的大小。如果 max < C ,則 max 更新為 C 之值,然後將 T 設為第 i - 1 個字元;其他的情況,max 與 T 更新。

字串掃完之後,因為最後一個連續的字元尚未判斷過其與 max 的大小。所以仿照上面的做法去判斷以及更新 max 之值。此時字元 T 與整數 max 之值即為所求。




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

創作回應

更多創作