用python给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。
时间: 2024-01-31 08:00:48 浏览: 28
示例:
输入:s = "()[]{}"
输出:True
输入:s = "([)]"
输出:False
思路:
可以利用栈来解决这个问题。遍历给定的字符串,如果字符是左括号,则将其压入栈中;如果字符是右括号,则取出栈顶元素,如果栈顶元素不能与该右括号匹配,则返回 False;如果遍历完字符串后栈不为空,则返回 False。
代码实现:
class Solution:
def isValid(self, s: str) -> bool:
stack = []
mapping = {')': '(', '}': '{', ']': '['}
for char in s:
if char in mapping:
if not stack or stack.pop() != mapping[char]:
return False
else:
stack.append(char)
return not stack
相关问题
python编写一个函数,给定一个字符串,判断该字符串是否为回文
一个回文字符串是指正着读和倒着读都是一样的字符串,比如 "racecar"。可以使用以下代码实现:
```python
def is_palindrome(string):
# 判断字符串是否为回文
return string == string[::-1]
```
这里使用了 Python 中的字符串切片语法,`string[::-1]` 表示将字符串反转。如果反转后的字符串和原字符串相同,那么就是回文字符串,返回 `True`;否则返回 `False`。
给定一个只包括,(,’)’的字符串 s,判断字符串是否有效,有效字符串需满足:
1. 左右括号必须成对出现。
2. 左括号必须先出现,右括号必须后出现。
3. 括号必须正确嵌套,即对于每一个左括号,必须有一个与之对应的右括号。
例如,字符串 "()" 、"(())" 和 "()()" 都是有效的,但是 "(()" 和 "())(" 不是有效的。
可以使用栈来解决这个问题。遍历字符串,当遇到左括号时,将其压入栈中,当遇到右括号时,从栈中弹出一个左括号,判断二者是否匹配。如果栈为空或者左右括号不匹配,则字符串无效。最后,如果栈中还有元素,则字符串也无效。
以下是 Python 代码实现:
```python
def isValid(s: str) -> bool:
stack = []
for c in s:
if c == '(':
stack.append(c)
elif c == ')':
if len(stack) == 0 or stack.pop() != '(':
return False
return len(stack) == 0
```