📅  最后修改于: 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
包。