https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/
class Solution {
public String removeDuplicates(String s) {
char[] arr = s.toCharArray();
Deque<Character> stack = new LinkedList<>();
for(int i = 0; i < arr.length;i++) {
if(stack.size() == 0) stack.addLast(arr[i]);
else{
if(stack.peekLast() == arr[i]) stack.pollLast();
else stack.addLast(arr[i]);
}
}
StringBuilder res = new StringBuilder();
while(!stack.isEmpty()) res.append(stack.pollFirst());
return res.toString();
}
}
思路:
如果arr[i]和stack.peekLast相同,就pollLast,如果不相同就进栈,最后用队列输出
class Solution {
public String removeDuplicates(String s) {
StringBuilder res = new StringBuilder();
int top = -1;
for(int i = 0; i < s.length();i++) {
if(top == -1){
res.append(s.charAt(i));
top++;
} else{
if(res.charAt(top) == s.charAt(i)){
res.deleteCharAt(top);
top--;
} else{
res.append(s.charAt(i));
top++;
}
}
}
return res.toString();
}
}
思路一样,就是简洁许多,速度也快了。