Leetcode——1047. 删除字符串中的所有相邻重复项
题解一
思路
和上一题区别不大,就是在进栈之前和栈顶元素进行比较,相同就弹出,不同就进栈,最后对栈内的元素进行输出。
代码
class Solution {
public String removeDuplicates(String s) {
Deque<Character> stack = new ArrayDeque<>();
for(int i = 0; i < s.length(); i++){
char temp = s.charAt(i);
if (!stack.isEmpty() && temp == stack.peek()){
stack.pop();
}
else{
stack.push(temp);
}
}
String result = "";
while(!stack.isEmpty()){
result = stack.pop() + result;
}
return result;
}
}
总结
第一点就是要在peek()之前检查栈内是否还有元素,空栈进行peek()操作会报错。
不知道stack怎么返回字符串,以为会有什么方法,结果就是一个简单的遍历。
进行遍历时,要注意栈先进后出的机制,注意不要将字符串反转。