Leetcode链接: link.
class Solution {
public:
bool isLetter(char ch)
{
if(ch >= 'a' && ch <= 'z'
|| ch >= 'A' && ch <= 'Z')
{
return true;
}
return false;
}
string reverseOnlyLetters(string S) {
int begin = 0,end = S.size() - 1;
while(begin < end)
{
while(begin < end && !isLetter(S[begin]))
++begin;
while(begin < end && !isLetter(S[end]))
--end;
//对于C++来说,库里是自带swap()的交换函数的,所以不需要在自己实现
swap(S[begin],S[end]);
//如果一上来就是字母,那么你交换完,没有相应的++和--,那么就一直是这两个字母在交换了
++begin;
--end;
}
return S;
}
};