20 有效的括號

2021-10-09 14:53:28 字數 1525 閱讀 6896

題目類別:棧

難度:容易

給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。

有效字串需滿足:

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...