📜  查找表达式是否有重复的括号(1)

📅  最后修改于: 2023-12-03 15:40:25.734000             🧑  作者: Mango

查找表达式是否有重复的括号

有些表达式中可能存在多余的括号,这会使表达式变得难以阅读和理解。在处理表达式之前,我们可以先判断它是否有重复的括号。本文将介绍一种简单的算法,用于查找表达式是否有重复的括号。

算法思路

我们可以使用栈的思想来遍历表达式。当遇到左括号时,我们将它压入栈中;当遇到右括号时,我们从栈中弹出元素,如果栈顶元素是左括号,则表示这个括号组合成了一个完整的表达式,我们可以将它从栈中删除。如果栈顶元素不是左括号,则表示这是一个多余的右括号,我们可以返回 false,表示表达式存在重复的括号。

当表达式遍历完成后,如果栈中仍然存在元素,则表示表达式不完整,我们可以返回 false,表示存在重复的括号。

如果表达式遍历完成后栈中不存在元素,则表示表达式没有重复的括号,我们可以返回 true

代码实现

以下是Java语言的实现示例:

import java.util.Stack;

public class Solution {

    public boolean checkParenthesis(String s) {
        Stack<Character> stack = new Stack<>();
        for (char c : s.toCharArray()) {
            if (c == '(') {
                stack.push(c);
            } else if (c == ')') {
                if (stack.isEmpty() || stack.peek() != '(') {
                    return false;
                }
                stack.pop();
            }
        }
        return stack.isEmpty();
    }
}

以下是Python语言的实现示例:

class Solution:
    def checkParenthesis(self, s: str) -> bool:
        stack = []
        for c in s:
            if c == '(':
                stack.append(c)
            elif c == ')':
                if not stack or stack[-1] != '(':
                    return False
                stack.pop()
        return not stack
总结

查找表达式是否有重复的括号是一个常见的问题,使用栈的思想可以很好地解决这个问题。在实际开发中,我们可以使用现成的工具类库来实现这个功能,例如Java中的 java.util.regex 包。