切換
舊版
前往
大廳
主題

ZeroJudge - e837: P4. 字母排列 (Letters) 解題心得

Not In My Back Yard | 2020-03-17 00:07:33 | 巴幣 2 | 人氣 161

題目連結:


題目大意:
給定一個由小寫字母組成的字串,長度不超過 10000 個字母。試問在該字串之中,最長的、按照順序(意旨字典序以公差為 1 遞增,例如單獨的字母本身、 ABC、FGHI 等。但是 ABD 、 CBA 等不算)的連續子字串長度以及內容為何?如果有多個,請輸出越後面出現的(即開頭在字串越後面的)。



範例輸入:
範例輸入一:
abcwkodvwxyzwia

範例輸入二:
gfeabuvstyzijo

範例輸入三:
apple


範例輸出:
範例輸出一:
5 vwxyz

範例輸出二:
2 ij

範例輸出三:
1 e


解題思維:
跟取數列極值同一個道理。

掃過一次字串,如果每個新遇到的字母比前一個字母大且只大上一個(也就是前一個字母字典上的「下一個」字母),就加入到一個暫存的字串裡(或是不暫存,只存開頭位置並事後再取也行);如果沒有比較大或是不是前一個字母的後繼者則判斷暫存的字串長度是否大於或是等於「當前」最長。如果有就更新成現在這個暫存的字串。

最後就輸出以上過程中得到的「當前」最長的長度以及內容(此時的當前已經是掃過整個字串了,所以必定是所求)。

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

創作回應

更多創作