给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
在 S 上反复执行重复项删除操作,直到无法继续删除。
在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
题解
题目链接
//先进后出,使用栈进行匹配
//遍历字符串
//字符串中当前字符如果与栈顶元素匹配,则当前元素不入栈并弹出栈顶元素,否则栈顶元素入栈。
class Solution {
public String removeDuplicates(String s) {
Stack<Character> stack = new Stack<>();
char c;
for(int i=0;i<s.length();i++){
c=s.charAt(i);
if((!stack.isEmpty())&&stack.peek()==c) stack.pop();
else stack.push(c);
}
String str = "";
//剩余的元素即为不重复的元素
while (!stack.isEmpty()) {
str = stack.pop() + str;
}
return str;
}
}