题目描述:
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
1.左括号必须用相同类型的右括号闭合。
2.左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
解题思路:
如果字符串满足题目条件,依次删掉所有相邻成对的 “()“或”{}“或”[]” 后,字符串最终会变为空串。
第一次遍历,找到 “()“或”{}“或”[]” 相邻成对出现的,左半部分索引为i,把它们去掉,字符串长度length -= 2;下次遍历从 i-1 开始,继续找成对出现的 “()“或”{}“或”[]” ,如此循环,直到i < length不成立,跳出循环。判断字符串s的长度,若为零,说明符合题目条件,返回True;若不为0,返回False。
测试用例:
代码如下:
class Solution:
def isValid(self, s: str) -> bool:
length = len(s)
if length == 0:
return True
elif length%2 != 0:
return False
else:
i = 0
while i < length-1:
if (s[i]=='(' and s[i+1]==')') or (s[i]=='{' and s[i+1]=='}') or (s[i]=='[' and s[i+1]==']'):
s = s[:i]+s[i+2:]
i -= 1
length -= 2
else:
i += 1
if len(s):
return False
return True