难度: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 <= 10033 <= S[i].ASCIIcode <= 122S 中不包含 \ 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++];elseres+=S[i];}return res;}};
执行用时 :0 ms, 在所有 C++ 提交中击败了100%的用户 内存消耗 :8.2MB, 在所有 C++ 提交中击败了82.89%的用户