# 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%的用户
