给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。
输入:“ab-cd”
输出:“dc-ba”
输入:“a-bC-dEf-ghIj”
输出:“j-Ih-gfE-dCba”
思路:这题的思路采用栈的数据结构来解决,先把所有字母入栈,然后遍历原字符串,如果是字母就去栈顶元素append,如果不是字母,就append当前位置的非字母字符.
具体实现代码如下
class Solution {
public String reverseOnlyLetters(String S) {
Stack<Character> stack = new Stack<>();
for (char c : S.toCharArray()){
if (Character.isLetter(c)){
stack.push(c);
}
}
StringBuilder sb = new StringBuilder();
for (char c : S.toCharArray()){
if (Character.isLetter(c)){
sb.append(stack.pop());
}else {
sb.append(c);
}
}
return sb.toString();
}
}
301

被折叠的 条评论
为什么被折叠?



