Python算法有效符号 isValid
程序员文章站
2024-01-19 09:48:58
分析:1、把'(',')','{','}','[',']'放在字典bracketPairs 中,闭括号为key,开括号为vule2、循环读取s串中每个值,判断是否存在字典bracketPairs 的key中(闭括号),如果是开括号,append到stack中3、如果是闭括号,这个闭环号对应的字典bracketPairs值:bracketPairs[c],对比这个值是否与stack[-1]相等,相等就pop掉stack[-1],继续循环s串。4、循环完毕,最后判断stack是否已为空,若为空,tr.....
分析: 1、把'(',')','{','}','[',']' 放在字典bracketPairs 中,闭括号为key,开括号为vule 2、循环读取s串中每个值,判断是否存在字典bracketPairs 的key中(闭括号),如果是开括号,append到stack中 3、如果是闭括号,这个闭环号对应的字典bracketPairs值:bracketPairs[c],对比这个值是否与stack[-1]相等,相等就pop掉stack[-1],继续循环s串。 4、循环完毕,最后判断stack是否已为空,若为空,true;不为空false 比较细节的知识点在最后有说明 code class Solution: def isValid(self, s: str) -> bool: #self.s=s stack = [] bracketPairs = {')':'(', '}':'{', ']':'['} if s=='': return True for c in s: # 若c为开括号, 压c入栈 if c not in bracketPairs: stack.append(c) # 若c为闭括号, 检查栈顶是否有对应的开括号, 若有则弹出栈顶的开括号, # 没有则返回False. else: # 若stack为空, 返回False if not stack: return False # 若stack不为空 else: # 栈顶开括号与c对应 if stack[-1]==bracketPairs[c]: stack.pop() # 栈顶开括号与c不对应 else: return False # stack为空则返回True, 否则返回False return False if stack else True s='{}' object=Solution() object1=object.isValid(s) print(object1) #object2=Solution.isValid(s) #print(object2) run: True Process finished with exit code 0 要求: ''' 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 示例 4: 输入: "([)]" 输出: false 示例 5: 输入: "{[]}" 输出: true '''
知识点1:
dict={'A':'a','B':'b'} s='Ab' for c in s: if c in dict: print(c)
运行:
A
Process finished with exit code 0
说明 if c in dict,c是判断是否存在dict的key中。
知识点2:
关于self的应用。可参考知识点self python的博客。
object=Solution()
object1=object.isValid(s)
print(object1)
对象要分别获取才可运行。
object2=Solution.isValid(s)
print(object2)
这样写就会报错。
知识点3:
以上code栈是放在list中实现,通过stack.append(c)增加,stack[-1]取最后一个,stack.pop()删除。
本文地址:https://blog.csdn.net/linjing0504/article/details/108265452