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();
}
}
思路一样,就是简洁许多,速度也快了。
本文提供了一种高效的算法解决方案,用于从字符串中移除所有相邻的重复字符。通过使用栈或StringBuilder来跟踪当前序列,并在遇到重复项时将其删除,从而简化字符串。
439

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



