有关于我
我的生活
这个网站
刷题之旅
Reverse Only Letters
Given a string S, return the "reversed" string where all characters that are not a letter stay in the same place, and all letters reverse their positions.
Example 1:
Input: "ab-cd"
Output: "dc-ba"
Example 2:
Input: "a-bC-dEf-ghIj"
Output: "j-Ih-gfE-dCba"
Example 3:
Input: "Test1ng-Leet=code-Q!"
Output: "Qedo1ct-eeLg=ntse-T!"
Note:
S.length <= 100 33 <= S[i].ASCIIcode <= 122 S doesn't contain \ or " Solution:
class Solution {
public String reverseOnlyLetters(String S) {
char[] arr = S.toCharArray();
int left = 0, right = S.length() - 1;
while (left < right) {
char a = arr[left];
char b = arr[right];
if (!Character.isLetter(a)) {
left ++;
} else if (!Character.isLetter(b)) {
right --;
} else {
char temp = arr[left];
arr[left ++] = arr[right];
arr[right --] = temp;
}
}
return new String(arr);
}
}
Please enable JavaScript to view the comments