题目
类型:双指针
解题思路
每次都使用 i 和 j 分别指向左端和右端可以被交换的字母,若当前指针指向的不是字母,则分别往中间移动,直到找到下一个可交换的字母位置,每次交换结束,两指针均往中间移动一位。
代码
class Solution {public String reverseOnlyLetters(String s) {char[] cs = s.toCharArray();int n = cs.length;for (int i = 0, j = n - 1; i < j; ) {while (i < j && !Character.isLetter(cs[i])) i++;while (i < j && !Character.isLetter(cs[j])) j--;if (i < j) {char c = cs[i];cs[i++] = cs[j];cs[j--] = c;}}return String.valueOf(cs);}}
