题目:
解答:
用双指针进行判断,当两边都是字母的时候就交换位置,否则,指向不是字母的指针移动,是字母的指针则保持不动,等待交换位置。
1 class Solution { 2 public: 3 string reverseOnlyLetters(string S) 4 { 5 int begin = 0; 6 int end = S.size()-1; 7 8 while(begin <= end) 9 { 10 if(!isalpha(S[begin])) 11 { 12 begin++; 13 } 14 else if(!isalpha(S[end])) 15 { 16 end--; 17 } 18 else if(isalpha(S[begin]) && isalpha(S[end])) 19 { 20 swap(S[begin], S[end]); 21 begin++; 22 end--; 23 } 24 } 25 26 return S; 27 } 28 };
原文:https://www.cnblogs.com/ocpc/p/12824092.html