联系我
×

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("")
};

在这里插入图片描述

posted @ 2022-02-23 10:15  .筱  阅读(32)  评论(0)    收藏  举报