一、题目描述
二、解题思路
典型的栈ADT的应用。当栈为空时,直接把下一个元素push入栈;栈不为空时,若下一个元素与栈顶元素peek()相同,则弹出,不同则压入。
三、编程实现
class Solution {
public String removeDuplicates(String S) {
char[] ch = S.toCharArray();
Stack<Character> stack = new Stack<>();
for(char c : ch){
if(stack.isEmpty()){
stack.push(c);
continue;
}
if(stack.peek() == c)
stack.pop();
else
stack.push(c);
}
StringBuilder sb = new StringBuilder();
for(char c : stack)
sb.append(c);
return sb.toString();
}
}
这里使用的栈是java.util.Stack的工具类,这个工具类继承了Vector类,有常有的size()、indexOf()等方法。
增强for循环内部调用了迭代器,使用起来会比for循环更快一些。