给定一个字符串 S
,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。
示例 1:
输入:"ab-cd"
输出:"dc-ba"
示例 2:
输入:"a-bC-dEf-ghIj"
输出:"j-Ih-gfE-dCba"
示例 3:
输入:"Test1ng-Leet=code-Q!"
输出:"Qedo1ct-eeLg=ntse-T!"
提示:
S.length <= 100
33 <= S[i].ASCIIcode <= 122
S
中不包含\
or"
===============================================================
思路:把字母拿出来反转,再遍历原字符串,碰到字母用反转后的数组,碰到非字母用原数组
===============================================================
class Solution {
public String reverseOnlyLetters(String S) {
char[] chars = S.toCharArray();
char[] zm = new char[S.length()];
int j=0;
for (int i = chars.length-1; i > -1; i--) {
if ((chars[i]<=90&&chars[i]>=65)||(chars[i]<=122&&chars[i]>=97)){
zm[j]=chars[i];
j++;
}
}
j=0;
StringBuilder builder = new StringBuilder();
for (int i = 0; i < chars.length; i++) {
if ((chars[i]<=90&&chars[i]>=65)||(chars[i]<=122&&chars[i]>=97)){
builder.append(zm[j]);
j++;
}else {
builder.append(chars[i]);
}
}
return builder.toString();
}
}