題目類別:棧
難度:容易
給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。
有效字串需滿足:
1、 左括號必須用相同型別的右括號閉合。
2、左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入:
"()"
輸出: true
示例 2:
輸入:
"(){}"
輸出: true
示例 3:
輸入:
"(]"
輸出: false
示例 4:
輸入:
"([)]"
輸出: false
示例 5:
輸入:
""輸出: true
想了五分鐘沒想出來
答案:解法一:巧妙地用了python裡面的replace函式,程式簡單清晰
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 ==
''
解法二:棧,雜湊表
解題思路:
1、演算法原理:
2、演算法流程:
3、提前返回 false
4、複雜度分析
時間複雜度 o(n)o(n)o(n):正確的括號組合需要遍歷 111 遍 s;
空間複雜度 o(n)o(n)o(n):雜湊表和棧使用線性的空間大小。
#stack.pop() 棧頂出棧
class
solution
:def
isvalid
(self, s:
str)
->
bool
: dic =',
'[':
']',
'(':
')',
'?':
'?'}
stack =
['?'
]for c in s:
elif dic[stack.pop()]
!= c:
return
false
return
len(stack)==1
20 有效括號
1.題目描述 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。2.示例 輸入 輸出 true輸入 輸出 false3.思路 可以採用棧來解決,第一步 判斷棧是否空,為空則進乙個括號,若不為空,則判斷當前括號和棧頂元素是否匹配,不...
20 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...
20 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true示例 2 輸入 輸出 true示例 3 輸入 輸出 false示例 4 輸入 輸出 false示例 5 輸入 輸出 tr...