3 JavaScript leetcodeを実現します.双指針法:文字列の母音文字を反転します.
目次
1テーマ
2例
3解答:双指針法
4コード
1テーマ
https://leetcode-cn.com/problems/reverse-vowels-of-a-string/
入力として文字列を作成し、文字列の母音文字を反転します.
2例
例1:
入力:「ハロー」
出力:「holle」
例2:
入力:「leetcode」
出力:「leotcede」
説明:
母音文字にはアルファベット「y」は含まれていません.
3解答:双指針法
JSでは、文字列は可変ではなく、文字列の文字の変化を容易にするために、文字列を配列に変換する必要があります.
最初のポインタleftとrightを設定し、leftは左から右へ文字列配列を巡回し、rightは右から左へ文字列配列を巡回し、両者が母音文字を指す場合、この2つの文字を交換します.具体的な解析:left<=right後に以下の操作を行います.
leftとrightが元の文字を指している場合、それらを交換しながら、leftを右に移動し、rightを左に移動します.
leftが指している文字が母音文字ではない場合、leftは右に移動します.
rightが指しているのが母音文字ではない場合、rightは左に移動します.
4コード
1テーマ
2例
3解答:双指針法
4コード
1テーマ
https://leetcode-cn.com/problems/reverse-vowels-of-a-string/
入力として文字列を作成し、文字列の母音文字を反転します.
2例
例1:
入力:「ハロー」
出力:「holle」
例2:
入力:「leetcode」
出力:「leotcede」
説明:
母音文字にはアルファベット「y」は含まれていません.
3解答:双指針法
JSでは、文字列は可変ではなく、文字列の文字の変化を容易にするために、文字列を配列に変換する必要があります.
最初のポインタleftとrightを設定し、leftは左から右へ文字列配列を巡回し、rightは右から左へ文字列配列を巡回し、両者が母音文字を指す場合、この2つの文字を交換します.具体的な解析:left<=right後に以下の操作を行います.
leftとrightが元の文字を指している場合、それらを交換しながら、leftを右に移動し、rightを左に移動します.
leftが指している文字が母音文字ではない場合、leftは右に移動します.
rightが指しているのが母音文字ではない場合、rightは左に移動します.
4コード
"use strict";
/**
* @param {string} s
* @return {string}
*/var reverseVowels = function(s) {
var vowelsStr = "aeiouAEIOU"; //
s = s.split(""); // ,
var left = 0; // , 0 ,
var right = s.length - 1; // , s ,
while(left <= right){
if(vowelsStr.indexOf(s[left])!==-1 && vowelsStr.indexOf(s[right])!==-1){
// left right , , left ,right ;
var temp = s[left];
s[left] = s[right];
s[right] = temp;
left++;
right--;
}else if(vowelsStr.indexOf(s[left])===-1){
// left ,left ;
left++;
}else{
// right ,right 。
right--;
}
}
return s.join(""); //
};
// while
function reverseVowels(str) {
let vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];
let strToArr = str.split('');
let left = 0; // ,
let right = strToArr.length - 1; //
let temp;
while(left < right){
while (vowels.indexOf(strToArr[left]) === -1 && left < right){
/* left< right,
, ,left< right, ,
, left>right, ,
* */
// : , ,
left++;
}
while (vowels.indexOf(strToArr[right]) === -1 && left < right){
right--;
//continue;
}
temp = strToArr[left];
strToArr[left] = strToArr[right];
strToArr[right] = temp;
left++;
right--;
}
return strToArr.join('');
}
let rel = reverseVowels('leetcode');
console.log(rel)