题目
给你一个字符串 s ,根据下述规则反转字符串:
- 所有非英文字母保留在原有位置。
- 所有英文字母(小写或大写)位置反转。
返回反转后的 s 。
地址:https://leetcode-cn.com/problems/reverse-only-letters/
题解
解题思路
字符串,对撞指针,具体定义可看https://blog.csdn.net/AtalantaDavis/article/details/122692769
代码
var reverseOnlyLetters = function(s) {
const sArr = s.split('');
for(let left = 0, right = sArr.length - 1; left < right; right--, left++) {
while(!/[a-zA-Z]/ig.test(sArr[left]) && left < right) {
left++;
}
while(!/[a-zA-Z]/ig.test(sArr[right]) && left < right) {
right--;
}
[sArr[left], sArr[right]] = [sArr[right], sArr[left]];
}
return sArr.join('');
};