LeetCode-反転文字列の母音文字(JavaScript)
1299 ワード
入力として文字列を作成し、文字列の母音文字を反転します.
例1:
考え方:
典型的な二重針――突き合わせ針の解法.二つのポインタを設定して、一つの端と一つの端を交互に動かします.
i:ヘッドポインタ、j:テールポインタ.
文字が母音文字かどうかを判断し、正規表現を採用します.正規表現の詳細な使い方は、正規表現の用法大全をご覧ください.
iの要素は母音文字かどうかを判断する.もしそうでなければ、i++です.
判断j 上の要素は母音文字ですか?もしそうでないなら、j--です.
i,j上の要素が等しいかどうかを判断し、待たなければ、i,j上の要素を交換する.(注意:文字列は変更できません.文字列を配列に変換することもできます.また、sliceで文字列スライスを新しい文字列に組み立てることもできます.)
iとjを移動します
例1:
: "hello"
: "holle"
例2: : "leetcode"
: "leotcede"
説明:母音文字にはアルファベット「y」は含まれていません.考え方:
典型的な二重針――突き合わせ針の解法.二つのポインタを設定して、一つの端と一つの端を交互に動かします.
i:ヘッドポインタ、j:テールポインタ.
文字が母音文字かどうかを判断し、正規表現を採用します.正規表現の詳細な使い方は、正規表現の用法大全をご覧ください.
JavaScript :
let reg = /[aeiouAEIOU]/
// /.../ ,
//
reg.test('a') // true
reg.test('c') // false
i<jの場合、ループ:iの要素は母音文字かどうかを判断する.もしそうでなければ、i++です.
判断j 上の要素は母音文字ですか?もしそうでないなら、j--です.
i,j上の要素が等しいかどうかを判断し、待たなければ、i,j上の要素を交換する.(注意:文字列は変更できません.文字列を配列に変換することもできます.また、sliceで文字列スライスを新しい文字列に組み立てることもできます.)
iとjを移動します
/**
* @param {string} s
* @return {string}
*/
var reverseVowels = function(s) {
let i = 0,
j = s.length-1,
reg = /[aeiouAEIOU]/,
str = s
while (i < j) {
if (!reg.test(s[i])) {
i ++;
continue;
}
if (!reg.test(s[j])) {
j--;
continue;
}
if (s[i] !== s[j]) {
str = str.slice(0,i) + s[j] + str.slice(i+1,j) + s[i] + str.slice(j+1)
}
i++
j--
}
return str
};