📅  最后修改于: 2023-12-03 15:12:47.483000             🧑  作者: Mango
本题要求实现一个程序,判断一个由一些括号(包括小括号 (),中括号 [] 和大括号 {})组成的字符串是否匹配。
在计算机科学中,使用栈(stack)数据结构来判断括号匹配问题。栈是一种先进后出的数据结构,它允许添加和移除元素。在本题中,我们可以通过栈来记录左括号,并在遇到右括号时进行匹配。
算法使用步骤:
class Solution:
def isValid(self, s: str) -> bool:
stack = []
for x in s:
if x == '(' or x == '{' or x == '[':
stack.append(x)
elif x == ')' and (not stack or stack[-1] != '('):
return False
elif x == '}' and (not stack or stack[-1] != '{'):
return False
elif x == ']' and (not stack or stack[-1] != '['):
return False
else:
stack.pop()
return not stack
class Solution {
public boolean isValid(String s) {
char[] stack = new char[s.length()];
int top = -1;
for (char x : s.toCharArray()) {
if (x == '(' || x == '{' || x == '[') {
stack[++top] = x;
} else if (x == ')' && (top == -1 || stack[top] != '(')) {
return false;
} else if (x == '}' && (top == -1 || stack[top] != '{')) {
return false;
} else if (x == ']' && (top == -1 || stack[top] != '[')) {
return false;
} else {
top--;
}
}
return top == -1;
}
}
以上代码为 Python 和 Java 两种语言的解法实现,都通过 LeetCode 上的测试用例。可根据实际情况选择对应的语言实现。
[{}]({[]})
true
谢谢阅读,祝你编程愉快!