題目連結(jié):
題目意譯:
一個(gè)字串如果其滿足以下條件,則其被視為美麗的:
5 個(gè)英文母音('a' 、 'e' 、 'i' 、 'o' 、 'u')每一個(gè)都應(yīng)出現(xiàn)至少一次、
所有字母應(yīng)按字典序排序(即所有 'a' 出現(xiàn)於 'e' 前,所有 'e' 出現(xiàn)於 'i' 前等等)。
例如,字串 "aeiou" 和 "aaaaaaeiiiioou" 是美麗的,但是 "uaeio" 、 "aeoiu" 和 "aaaeeeooo" 則是不美麗的。
給定一個(gè)字串 word,其只由英文母音所組成。回傳 word 中的最長美麗子字串的長度。如果不存在這樣子的子字串,則回傳 0。
一個(gè)子字串為一個(gè)字串中的連續(xù)字元序列。
限制:
1 ≦ word.length ≦ 5 × 10 ^ 5
word 由字元 'a' 、 'e' 、 'i' 、 'o' 和 'u'。
範(fàn)例測資:
範(fàn)例 1:
輸入: word = "aeiaaioaaaaeiiiiouuuooaauuaeiu"
輸出: 13
解釋: word 中的最長美麗子字串為 "aaaaeiiiiouuu",其長度 13。
範(fàn)例 2:
輸入: word = "aeeeiiiioooauuuaeiou"
輸出: 5
解釋: word 中的最長美麗子字串為 "aeiou",其長度 5。
範(fàn)例 3:
輸入: word = "a"
輸出: 0
解釋: 沒有美麗子字串存在,所以回傳 0。
解題思維:
就是單純地從掃過一次 word 並從 'a' 到 'e' 配對(duì)即可。
也就是說一開始我們想找 'a',所以會(huì)先找到第一個(gè) 'a',接著我們會(huì)把接下來的連續(xù) 'a' 全部掃過一次;接著到這一批 'a' 結(jié)束後,我們想要配對(duì) 'e'。因此如果現(xiàn)在看到的字元不是 'e',則跳回到 'a' 開始配對(duì)。如果是 'e',則重複類似 'a' 的動(dòng)作……以此類推。
而我們每一次配對(duì) 'u',便看現(xiàn)在已配對(duì)完成的子字串長度是否大過最大值。如果是就將該值更新為現(xiàn)在的長度。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請(qǐng)各位大大撥冗討論。