给你一个字符串 s
,根据下述规则反转字符串:
- 所有非英文字母保留在原有位置。
- 所有英文字母(小写或大写)位置反转。
返回反转后的 s
。
示例 1:
输入:s = "ab-cd" 输出:"dc-ba"
示例 2:
输入:s = "a-bC-dEf-ghIj" 输出:"j-Ih-gfE-dCba"
示例 3:
输入:s = "Test1ng-Leet=code-Q!" 输出:"Qedo1ct-eeLg=ntse-T!"
提示
1 <= s.length <= 100
s
仅由 ASCII 值在范围[33, 122]
的字符组成s
不含'\"'
或'\\'
class Solution {
public:
string reverseOnlyLetters(string s) {
int left=0;
int right=s.size()-1;
while(left<right)
{
while(left<right && !isalpha(s[left]))
{
left++;
}
while(left<right && !isalpha(s[right]))
{
right--;
}
swap(s[left],s[right]);
left++;
right--;
}
return s;
}
};
1234!@#$
假如是这个字符串它没有字母那么left就会一直往后找就是死循环,right也是一样