題目連結:
題目意譯:
給定一個索引值從 0 開始數的字串 s,將 s 重新排列成一個新字串 t 使得:
所有子音維持於原位。更正式地說,如果現在有一個索引值 i (0 ≦ i < s.length)使得 s[i] 是一個子音,則 t[i] = s[i]。
所有母音必須根據它們的 ASCII 值之非遞減順序來排序。更正式地說,對於一個索引值對 i 、 j(0 ≦ i < j < s.length)使得 s[i] 和 s[j] 都是母音,則 t[i] 不得比 t[j] 有更大的 ASCII 值。
回傳結果字串。
母音為 'a' 、 'e' 、 'i' 、 'o' 和 'u',而它們可以作為小寫或大寫出現。而子音為那些不是母音的其餘字母。
限制:
1 ≦ s.length ≦ 10 ^ 5
s 只由英文字母表中的大小寫字母所組成。
範例測資:
範例 1:
輸入: s = "lEetcOde"
輸出: "lEOtcede"
解釋: 'E' 、 'O' 和 'e' 是 s 中的母音;'l' 、 't' 、 'c' 和 'd' 全部都是子音。所有母音根據它們的 ASCII 值來排序,而子音則維持在原位。
範例 2:
輸入: s = "lYmpH"
輸出: "lYmpH"
解釋: s 中沒有母音(所有字元都是子音),所以我們回傳 "lYmpH"。
解題思維:
就是單純地先掃過一次字串把所有母音的位置和字元本身擷取出來。把擷取出來的字元按照題目要求排序,最後再根據位置塞回去 s 中即可。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。