Reverse Only Letters
Problem statement
Given a string s, reverse the string according to the following rules:
- All the characters that are not English letters remain in the same position.
- All the English letters (lowercase or uppercase) should be reversed.
Return s after reversing it.
Example 1:
Input: s = "ab-cd"Output: "dc-ba"
Example 2:
Input: s = "a-bC-dEf-ghIj"Output: "j-Ih-gfE-dCba"
Example 3:
Input: s = "Test1ng-Leet=code-Q!"Output: "Qedo1ct-eeLg=ntse-T!"
Constraints:
1 <= s.length <= 100sconsists of characters with ASCII values in the range[33, 122].sdoes not contain'"'or'\'.
My solution
/**
* @param {string} s
* @return {string}
*/
var reverseOnlyLetters = function(s) {
const sArr = s.split("")
let left = 0;
let right = sArr.length - 1;
const regex = /[a-zA-Z]/
// console.log(sArr[left].match(regex))
while (left <= right) {
const leftChar = sArr[left]
const rightChar = sArr[right];
if (!leftChar.match(regex)) {
left++
} else if (!rightChar.match(regex)) {
right--
} else {
[sArr[right], sArr[left]] = [sArr[left], sArr[right]]
left++;
right--
}
}
return sArr.join("")
};