【JS】仅仅反转字母 #字符串

给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。

输入: “a-bC-dEf-ghIj” 输出: j-Ih-gfE-dCba

输入: “z<*zj” 输出: j<*zz

输入: “Test1ng-Leet=code-Q!” 输出: Qedo1ct-eeLg=ntse-T!



解法一:

创建一个新变量 str ,接收转成数组且颠倒的字符串 S

删除 str 中26个英文之外的字符,

检测字符串 S 再次把标点数字等字符写入 str

教训 -该用2个循环的时候还是用2个,一个循环容易出错啊


var reverseOnlyLetters = function(S) {

    var str=S.split("").reverse() ,si,sx
    for(var i=str.length;i>=0;i--){
        si=str[i]
        if((si>='a' && si<='z') || (si>='A' && si<='Z')){
        }else{
            str.splice(i,1)
        }
    }

    for(var i=0;i='a' && sx<='z') || (sx>='A' && sx<='Z')){
        }else{
            str.splice(i,0,sx)
        }
    }
return str.join("")

};

116 / 116 个通过测试用例
执行用时:68 ms

你可能感兴趣的:(LeetCode,javascript)