题目描述:
给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。
提示:
- S.length <= 100
- 33 <= S[i].ASCIIcode <= 122
- S 中不包含 \ or "
示例 1:
- 输入:“ab-cd”
- 输出:“dc-ba”
示例 2:
- 输入:“a-bC-dEf-ghIj”
- 输出:“j-Ih-gfE-dCba”
示例 3:
- 输入:“Test1ng-Leet=code-Q!”
- 输出:“Qedo1ct-eeLg=ntse-T!”
代码如下:
class Solution {
public String reverseOnlyLetters(String S) {
int n = S.length();
char[] ch = S.toCharArray();
LinkedList<Character> list = new LinkedList<>();
for (int i = 0; i < n; i++) {
if ((ch[i] >= 'A' && ch[i] <= 'Z') || (ch[i] >= 'a' && ch[i] <= 'z')) {
list.add(ch[i]);
}
}
for (int j = 0; j < n; j++) {
if ((ch[j] >= 'A' && ch[j] <= 'Z') || (ch[j] >= 'a' && ch[j] <= 'z')) {
ch[j] = list.removeLast();
}
}
return new String(ch);
}
}
执行结果: