# 给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列 # 括号必须以正确的顺序关闭:"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。 # 左括号必须用相同类型的右括号闭合。 # 左括号必须以正确的顺序闭合。 # 注意空字符串可被认为是有效字符串。 ''' 思路:利用列表的append()和pop()函数实现栈先进后出的逻辑。 1、遍历输入字符串 2、如果当前字符为左半边括号时,则将其压入栈中 3、如果遇到右半边括号时,分类讨论: a)若此时栈为空,则直接返回false b)若栈顶元素不为对应的左半边括号,返回false c)若栈不为空且为对应的左半边括号,则取出栈顶元素,继续循环 '''
class StrVaild:
def isvaild(self,str):
stack = []
for item in str:
if item == '(' or item == '[' or item == '{':
stack.append(item)
else:
if stack == []:
return False
elif item == ')' and stack.pop()!='(':
return False
elif item == ']' and stack.pop()!='[':
return False
elif item == '}' and stack.pop()!='{':
return False
return stack == []
sv=StrVaild()
print(sv.isvaild('['))
print(sv.isvaild('()'))
print(sv.isvaild('[)]'))
print(sv.isvaild('()[]{}'))
print(sv.isvaild('([)]'))
print(sv.isvaild('[()[]]'))
print(sv.isvaild('[([()])]'))
执行结果:文章来源:https://www.toymoban.com/news/detail-409847.html
False
True
False
True
False
True
True文章来源地址https://www.toymoban.com/news/detail-409847.html
到了这里,关于Python实现字符串是否合法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!