难得一见的简单每日一题啊,思路并不复杂。首先定义两个指针left
和right
,分别指向字符串数组的头和尾,两个指针的内容进行对比,如若都是字母,则二者进行交换,如若不是字母,则不是字母的指针向另一个指针的方向移动一位,重复这个操作,直到left
指针大于或等于right
指针时,结束流程。思路有了,开始写代码,AC代码如下:
class Solution {
public:
string reverseOnlyLetters(string s) {
int left, right;
int len = s.length()-1;
left = 0;
right = len;
while(left<right) {
if(((65<=(int)s[left]) && ((int)s[left]<=90)) || ((97<=(int)s[left]) && ((int)s[left]<=122))) {
if(((65<=(int)s[right]) && ((int)s[right]<=90)) || ((97<=(int)s[right]) && ((int)s[right]<=122))) {
int tmp = s[left];
s[left] = s[right];
s[right] = tmp;
left++;
right--;
}else {
right--;
}
}else {
left++;
}
}
return s;
}
};