https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/
解题思路利用栈
遍历字符串中的所有字符
如果栈为空,直接入栈
否则判断该字符是否与栈顶元素相同
如果两字符相同,删除栈顶元素
如果两字符不同,将当前字符入栈
最后留下的栈内字符都是相邻不重复的字符
由于Deque是双向队列,可以从队尾弹出字符,并添加到StringBuffer对象中.最终将StringBuffer通过toString()方法返回字符串
代码(Deque作栈)class Solution {
public String removeDuplicates(String s) {
int len = s.length();
StringBuffer sb = new StringBuffer();//存放结果的字符数组
//linkedList:基于链表实现的链表双向队列,在这里用作栈
Deque stack = new linkedList<>();
//遍历 s
for(int i=0; i
自己瞎编的好像提交结果没有那么理想
继续改
解题思路
直接用StringBuffer对象作栈,省去Deque栈到StringBuffer对象的转换过程
代码(StringBuffer作栈)
class Solution {
public String removeDuplicates(String s) {
int len = s.length();
//拿字符串直接作为栈,省去了栈还要转为字符串的操作
StringBuffer sb = new StringBuffer();
//top作为sb的长度
int top = -1;
//遍历 s
for(int i=0; i= 0 && sb.charAt(top) == c){
sb.deleteCharAt(top);
top--;
}
}
return sb.toString();
}
}
貌似好了点儿



