题目
思路
这是一道easy题,很明显要用栈。
有三种情况:
-
如果栈空,则直接入栈。
-
如果栈顶元素和当前元素不同则入栈。
-
如果栈顶元素和当前元素相同则栈顶元素出栈
最后再将栈中的元素依次pop,添加到一个字符串中就行。
代码
java
import java.util.Deque;
import java.util.LinkedList;
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public String removeDuplicates(String s) {
Deque<Character> deque = new LinkedList<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
//如果栈空,则直接入栈
//如果栈顶元素和当前元素不同则入栈
if (deque.isEmpty() || deque.peek() != c) {
deque.push(c);
} else {
//如果栈顶元素和当前元素相同则栈顶元素出栈
deque.pop();
}
}
//将栈中元素添加到字符串中
StringBuilder sb = new StringBuilder();
while (!deque.isEmpty()) {
sb.append(deque.pop());
}
//先反转再转成字符串
return sb.reverse().toString();
}
}
//leetcode submit region end(Prohibit modification and deletion)