简单题,双指针遍历就可以啦
class Solution {
public:
string reverseOnlyLetters(string S) {
int l = 0, r = S.size()-1;
while(l < r){
while(l < S.size() && !isalpha(S[l])) ++l;
while(r >= 0 && !isalpha(S[r])) --r;
if(l < r) swap(S[l++], S[r--]);
else break;
}
return S;
}
};
还可以借助栈先进后出的特点,可以参考:仅仅反转字母 - 仅仅反转字母 - 力扣(LeetCode)