题目:
给定一个字符串 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 <= 122
S 中不包含 \ or "
思路:
使用双指针
代码实现:
/**
* @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;
}