(Js)Leetcode917。逆文字のみ

トピック:

文字列Sを指定すると、文字ではない文字が所定の位置に保持され、すべての文字の位置が逆になる「反転」文字列が返されます。

例1:

入力: "ab-cd"
出力: "dc-ba"
例2:

入力: "a-bC-dEf-ghIj"
出力: "j-Ih-gfE-dCba"
例3:

入力:「Test1ng-Leet = code-Q!」
出力:「Qedo1ct-eeLg = ntse-T!」

促す:

S.length <= 100
33 <= S [i] .ASCIIcode <= 
122S中不探\または "

アイデア:

デュアルポインタを使用する

コード:

/**
 * @param {string} S
 * @return {string}
 */
var reverseOnlyLetters = function(S) {
    let left = 0, right = S.length - 1;
    S = S.split('');
    while(left <= right) {
        if(isLetter(S[left]) && isLetter(S[right])) {
            [S[left], S[right]] = [S[right], S[left]];
            left++;
            right--;
        } else if(!isLetter(S[left])) {
            left++;
        } else if(!isLetter(S[right])) {
            right--;
        }
    }
    return S.join('');
};

var isLetter = function(val) {
    if((val.charCodeAt() >= 97 && val.charCodeAt() <= 122) 
     || (val.charCodeAt() >= 65 && val.charCodeAt() <= 90)) {
        return true;
    } 
    return false;
}

演算結果:

おすすめ

転載: blog.csdn.net/M_Eve/article/details/113283035