题目来源:https://leetcode-cn.com/problems/reverse-only-letters/
大致题意:
给一个字符串,其中有字母和其他字符,在保证其他字符位置不变的情况下,将所有字母所在位置翻转
思路
- 遍历字符串,取出所有字母
- 翻转取出的字母,形成新字符串
- 便利原字符串,找到其他字符所在位置,将对应的字符插入到新字符串的对应位置中
代码:
public String reverseOnlyLetters(String s) {
StringBuffer sb = new StringBuffer();
int n = s.length();
// 取出字母
for (int i = 0; i < n; i++) {
char c = s.charAt(i);
if (Character.isLetter(c)) {
sb.append(c);
}
}
// 翻转
sb.reverse();
// 插入其他字符
for (int i = 0; i < n; i++) {
char c = s.charAt(i);
if (!Character.isLetter(c)) {
sb.insert(i, c);
}
}
return sb.toString();
}