トピック:
文字列Sを指定すると、文字ではない文字が所定の位置に保持され、すべての文字の位置が逆になる「反転」文字列が返されます。
例1:
入力: "ab-cd"
出力: "dc-ba"
例2:入力: "a-bC-dEf-ghIj"
出力: "j-Ih-gfE-dCba"
例3:入力:「Test1ng-Leet = code-Q!」
出力:「Qedo1ct-eeLg = ntse-T!」促す:
S.length <= 100
33 <= S [i] .ASCIIcode <=
122S中不探\または "
アイデア:
デュアルポインタを使用する
コード:
/**
* @param {string} S
* @return {string}
*/
var reverseOnlyLetters = function(S) {
let left = 0, right = S.length - 1;
S = S.split('');
while(left <= right) {
if(isLetter(S[left]) && isLetter(S[right])) {
[S[left], S[right]] = [S[right], S[left]];
left++;
right--;
} else if(!isLetter(S[left])) {
left++;
} else if(!isLetter(S[right])) {
right--;
}
}
return S.join('');
};
var isLetter = function(val) {
if((val.charCodeAt() >= 97 && val.charCodeAt() <= 122)
|| (val.charCodeAt() >= 65 && val.charCodeAt() <= 90)) {
return true;
}
return false;
}