题目:
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例:
输入:s = "()" 输出:true
输入:s = "()[]{}" 输出:true
输入:s = "(]" 输出:false
输入:s = "([)]" 输出:false
输入:s = "{[]}" 输出:true
解题思路:
解法一(栈):
遍历字符串,将字符串与栈顶元素对比,能成对就将栈顶元素删除,如果不能配对,就将该字符放进栈,当字符串遍历完毕时,栈为空返回True,不为空就返回False。
stack=list()
pair={"]":"[","}":"{",")":"("}
if len(s)%2==1:
return False
for i in s:
if stack:
if (i in pair) and stack[-1]==pair[i]:
stack.pop()
else:
stack.append(i)
else:
stack.append(i)
return not stack
知识:
利用列表建立栈stack=list(),也就是使用列表的功能来实现栈的特点
栈顶元素stack[-1]
删除栈顶元素stack.pop
建立字典内容
pair={key:value, key2:value2} 应该使用尖括号
pair=dict() 应该使用圆括号