給定乙個只包括'('
,')'
,''
,'['
,']'
的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
示例 2:
輸入: "(){}"
輸出: true
示例 3:
輸入: "(]"
輸出: false
分析:
# 思路2用乙個字典的資料型別,來實現與棧頂元素做匹配,dic=':'
# (這裡注意一下,key是right,value是left)
## 舉個例子:[({})]
# [入棧,(入棧,是right的元素,彈出現在棧的棧頂元素stack[-1],
# 與dic中key為}的值做乙個匹配,如果stack[-1]不等於dic的value,則返回false,如果值相等,匹配成功,返回true
## 彈出棧頂元素,剩下的一次類推。知道所有元素出棧後,如果這時棧還有元素,則返回false。
class solution(object):
def isvalid(self, s):
""":type s: str
:rtype: bool
"""# 注意空串是ture
if len(s)%2 != 0:
return false
dicts = ','[':']'}
stack =
for key in s:
if key in dicts:
else:
# }是right的元素,彈出現在棧的棧頂元素stack[-1]
# 如果棧不空,彈出棧頂元素
# 對比棧頂元素是否是當前元素的配對元素
if not stack or key != dicts[stack.pop()]:
return false
return stack==
妙!!:
class solution:
def isvalid(self, s):
while '{}' in s or '()' in s or '' in s:
s = s.replace('{}', '')
s = s.replace('', '')
s = s.replace('()', '')
return s == ''
參考: LeetCode20有效括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...
Leetcode 20 有效括號
leetcode 20 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true pthon 列表 如 a a b 字典 如 dict not ...
leetcode 20 有效括號
怎麼減少if語句,判斷是否是某乙個值,將值存進map中,是否在map中,若在,則是 匹配用map 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出...