题目
给你一个字符串 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!"
解题
方法一:双指针
class Solution { public: string reverseOnlyLetters(string s) { int left=0,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--]); } return s; } };