原题地址:leetcode-cn.com/problems/re…
思路: 双指针, 可以先将特殊字符放到新的数组, 然后遍历, 依次将空白填上即可.
class Solution {
public String reverseOnlyLetters(String s) {
char[] result = new char[s.length()];
char[] charArray = s.toCharArray();
for (int i = 0; i < charArray.length; i++) {
if (charArray[i] < 65 || (charArray[i] > 90 && charArray[i] < 97) || charArray[i] > 122) {
result[i] = charArray[i];
}
}
int i = 0, j = charArray.length - 1;
while (i < charArray.length) {
if (result[i] != '\u0000') {
i++;
} else if (charArray[j] < 65 || (charArray[j] > 90 && charArray[j] < 97) || charArray[j] > 122) {
j--;
} else {
result[i++] = charArray[j--];
}
}
return new String(result);
}
}