给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。
时间: 2024-01-31 22:59:12 浏览: 74
示例 1:
输入: s = "()"
输出: true
示例 2:
输入: s = "()[]{}"
输出: true
示例 3:
输入: s = "(]"
输出: false
示例 4:
输入: s = "([)]"
输出: false
示例 5:
输入: s = "{[]}"
输出: true
提示:
1 <= s.length <= 104
s 仅由括号 '()[]{}' 组成
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-parentheses
相关问题
java给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
在 Java 中,你可以使用栈 (Stack) 的数据结构来解决这个问题。栈是一种后进先出 (LIFO) 的数据结构,非常适合处理需要检查配对字符的问题。对于每个字符,你需要按照以下规则来进行:
1. 如果遇到 '(', '{', '[', 开始一个新的栈元素。
2. 遇到 ')'、'}' 或 ']' 时,检查栈顶元素是否对应当前字符的开启符号(即 '(' 对应 ')','{' 对应 '}','[' 对应 ']')。如果匹配,则弹出栈顶元素;如果不匹配,返回 false。
3. 如果遍历完整个字符串后,栈为空,说明所有的配对都成功关闭了,返回 true;否则,存在未关闭的开启符号,返回 false。
下面是一个简单的 Java 函数实现这个功能:
```java
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (char c : s.toCharArray()) {
if (c == '(' || c == '{' || c == '[') {
stack.push(c);
} else if (c == ')' && !stack.isEmpty() && stack.peek() == '(') {
stack.pop();
} else if (c == '}' && !stack.isEmpty() && stack.peek() == '{') {
stack.pop();
} else if (c == ']' && !stack.isEmpty() && stack.peek() == '[') {
stack.pop();
} else {
return false; // 不匹配的闭合符
}
}
return stack.isEmpty(); // 检查栈是否为空
}
```
给定一个只包括‘(’, ‘)’, ’{‘, ‘}’, ‘[’, ’]”的字符串 s , 判断字符串是否合法。
给定一个只包括‘(’, ‘)’, ’{‘, ‘}’, ‘[’, ’]”的字符串 s,判断字符串是否合法的方法是使用栈来进行匹配。遍历字符串s,当遇到左括号时,将其入栈;当遇到右括号时,判断栈顶元素是否与当前右括号匹配,如果匹配则将栈顶元素出栈,否则返回false。最后,如果栈为空,则说明字符串合法,否则返回false。
以下是判断字符串是否合法的示例代码:
```python
def isValid(s):
stack = []
mapping = {')': '(', '}': '{', ']': '['}
for char in s:
if char in mapping:
if not stack or stack[-1] != mapping[char]:
return False
stack.pop()
else:
stack.append(char)
return not stack
s = input("请输入字符串:")
if isValid(s):
print("字符串合法")
else:
print("字符串不合法")
```
阅读全文