Java 求解删除字符串中的所有相邻重复项

Posted 南淮北安

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 求解删除字符串中的所有相邻重复项相关的知识,希望对你有一定的参考价值。

一、题目

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。

在 S 上反复执行重复项删除操作,直到无法继续删除。

在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

二、题解

该题同样借助栈实现,栈为空或者要入栈的元素和栈顶元素不等时,就入栈

class Solution 
    public String removeDuplicates(String S) 
        Deque<Character> deque = new LinkedList<>();
        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;
    

精简:

class Solution 
    public String removeDuplicates(String s) 
        Deque<Character> deque = new LinkedList<>();
        for (char ch : s.toCharArray()) 
            if (!deque.isEmpty() && deque.peek() == ch) 
                deque.pop();
                continue;
            
            deque.push(ch);
        
        String str = "";
        while (!deque.isEmpty()) 
            str = deque.pop() + str;
        
        return str;
    

以上是关于Java 求解删除字符串中的所有相邻重复项的主要内容,如果未能解决你的问题,请参考以下文章

《LeetCode之每日一题》:73.删除字符串中的所有相邻重复项

Leetcode 1047 删除字符串中的所有相邻重复项

LeetCode刷题(160)~删除字符串中的所有相邻重复项

⌈力扣⌋删除字符串中的所有相邻重复项

Python编程题35--删除字符串中的所有相邻重复项

代码随想录算法训练营第11天 | ● 20. 有效的括号 ● 1047. 删除字符串中的所有相邻重复项 ● 150. 逆波兰表达式求值