题目:链接
题目分析:从左到右删除相邻重复项;只需遍历这个字符串,遍历的过程需要记录前面已经遍历得到的字符;可以用栈记录;例如:"abbaca"
过程为:开始时栈为空直接添加元素,要想再次添加元素要保证栈栈顶元素与添加的元素不重复;
栈顶元素与添加的元素相同时,弹出栈顶元素;
代码逻辑为:
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if (!stack.isEmpty() && stack.peek() == c) {
stack.pop();
} else {
stack.push(c);
}
}
最终栈中保留的字符串就是我们要获得的字符串;
class Solution {
public String removeDuplicates(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if (!stack.isEmpty() && stack.peek() == c) {
stack.pop();
} else {
stack.push(c);
}
}
StringBuilder sb = new StringBuilder();
//遍历字符数组
for (char c : stack) {
sb.append(c);
}
// 把sb转化为 String类型
return sb.toString();
}
}
如有错误,欢迎大家指正;