- 问题描述
反转字符串中的字母, 不对其他字字符进行反转. - 解决思路
将字符串中的字符压入到栈中, 栈的弹出顺序就是字母的逆序.
判断原字符串中的每个字符是否为字母, 若为字母, 弹出栈顶的元素;否则, 就将该字符追加到结果中. - 源代码
class Solution {
public String reverseOnlyLetters(String S) {
Stack<Character> letters = new Stack();
for (char c : S.toCharArray()) {
if (Character.isLetter(c)) {
letters.push(c);
}
}
StringBuilder result = new StringBuilder();
for (char c : S.toCharArray()) {
if (Character.isLetter(c)) {
result.append(letters.pop());
} else {
result.append(c);
}
}
return result.toString();
}
}