917. 仅仅反转字母
查看原题
解题思路
双指针,两端同时向中间判断,遇到非字母就跳过,遇到字母的交换位置。
代码
/**
* @param {string} s
* @return {string}
*/
var reverseOnlyLetters = function(s) {
const chars = s.split('')
for(let l = 0, r = s.length - 1; l < r;) {
while(l < r && !((chars[l] >= 'a' && chars[l] <= 'z') || (chars[l] >= 'A' && chars[l] <= 'Z')))
l++
while(r > l && !((chars[r] >= 'a' && chars[r] <= 'z') || (chars[r] >= 'A' && chars[r] <= 'Z')))
r--
if(l < r) {
const tmp = chars[l]
chars[l++] = chars[r]
chars[r--] = tmp
}
}
return chars.join("")
};