leetcode 917. 仅仅反转字母(Reverse Only Letters)
目录
题目描述:
给定一个字符串 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"
解法:
class Solution {
public:
string reverseOnlyLetters(string S) {
int sz = S.size();
string res = S;
int l = 0, r = sz-1;
vector<bool> flag(128, false);
for(int ch = 'a'; ch <= 'z'; ch++){
flag[ch] = true;
flag[ch - 'a' + 'A'] = true;
}
while(l < r){
while(l < r && flag[S[l]] == false){
l++;
}
while(l < r && flag[S[r]] == false){
r--;
}
if(l < r){
swap(res[l], res[r]);
l++;
r--;
}
}
return res;
}
};

更多精彩