给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
在 S 上反复执行重复项删除操作,直到无法继续删除。
在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。
示例:
- import java.util.ArrayDeque;
-
- public class Copy {
- public String removeDuplicates(String S) {
- //ArrayDeque会比LinkedList在除了删除元素这一点外会快一点
-
- ArrayDeque
deque = new ArrayDeque<>(); - char ch;
- for (int i = 0; i < S.length(); i++) {
- ch = S.charAt(i);
- if (deque.isEmpty() || deque.peek() != ch) {
- deque.push(ch);
- } else {
- deque.pop();
- }
- }
- String str = "";
- //剩余的元素即为不重复的元素
- while (!deque.isEmpty()) {
- str = deque.pop() + str;
- }
- return str;
- }
-
- public static void main(String[] args) {
- String s = "aaabbc";
- Copy copy = new Copy();
- String res = copy.removeDuplicates(s);
- System.out.println(res);
-
- }
- }