917.Reverse Only Letters

917.Reverse Only Letters

难度:Easy

给定一个字符串 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 <= 122 
S 中不包含 \ or "

利用一个string存储所有字母,然后将逆序字母和非字母合并。

class Solution {
public:
    string reverseOnlyLetters(string S) {
        string alpha;
        string res;
        for(auto c:S)
            if((c>='a' && c<='z' ) || (c>='A' && c<='Z')  ) 
                alpha+=c;
        int start=0;
        int len=alpha.length();
        for(int i=0;i<S.length();i++)
        {
            if((S[i] >= 'a' && S[i]<='z') || (S[i]>='A'  && S[i] <='Z')) 
                res+=alpha[len-1-start++];
            else 
                res+=S[i];
        }
            return res;
    }
};

执行用时 :0 ms, 在所有 C++ 提交中击败了100%的用户 内存消耗 :8.2MB, 在所有 C++ 提交中击败了82.89%的用户

Last updated