题目描述:
给定一个字符串 S
,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。
示例 1:
输入:"ab-cd"
输出:"dc-ba"
【仅仅反转字母-LeetCode(Java实现)】示例 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) {
if (S == null) {
return S;
}
//取得所有为字母的字符,组成一个字母字符串
StringBuffer str = new StringBuffer("");
for (int i = 0;
i < S.length();
i++) {
char val = S.charAt(i);
if ((val >= 'a' && val <= 'z') || (val >= 'A' && val <= 'Z')) {
str.append(val);
}
}
//反转字母字符串
str.reverse();
StringBuffer s1 = new StringBuffer(S);
//用反转后的字母字符串中的字符替换原字符串中的字母
int k = 0;
for (int i = 0;
i < s1.length();
i++) {
char val = s1.charAt(i);
if ((val >= 'a' && val <= 'z') || (val >= 'A' && val <= 'Z')) {
String valuehttps://www.it610.com/article/= "" + str.charAt(k);
s1.replace(i,i+1,value);
k++;
}
}
return s1.toString();
}
}