leetcode 算法题849 (简单240) 仅仅反转字母
- 题目介绍
给定一个字符串 S,
返回 “反转后的” 字符串,
其中不是字母的字符都保留在原地,
而所有字母的位置发生反转。
- 示例
输入:“ab-cd”
输出:“dc-ba”
输入:“a-bC-dEf-ghIj”
输出:“j-Ih-gfE-dCba”
输入:“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 start = 0, end = S.length - 1, startStr = endStart = '';
while(start <= end) {
while(!isLetter(S.charCodeAt(start)) && start < end) {
startStr += S[start++]
}
while(!isLetter(S.charCodeAt(end)) && start < end) {
endStart = S[end--] + endStart;
}
startStr += S[end--];
if(start > end) {
return startStr + endStart;
}
endStart = S[start++] + endStart;
}
return startStr + endStart;
};
const isLetter = code => {
console.log(code)
return (code > 64 && code < 91) || (code > 96 && code < 123);
}
执行用时 : 100 ms, 在所有 JavaScript 提交中击败了21.59%的用户
内存消耗 : 37.7 MB, 在所有 JavaScript 提交中击败了5.55%的用户