力扣刷題記錄 字串 簡單 20有效的括號

2021-09-26 18:17:50 字數 1858 閱讀 6855

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

有效字串需滿足:

注意空字串可被認為是有效字串。

輸入: 「()」

輸出: true

輸入: 「(){}」

輸出: true

輸入: 「(]」

輸出: false

輸入: 「([)]」

輸出: false

輸入: 「」

輸出: true

參考官方解答,利用棧

class

solution

(object)

: def isvalid

(self, s)

:"""

:type s: str

:rtype: bool

"""length =

len(s)

# 空字串被認為是有效字串

if length ==0:

return true

# 不成對必然不是有效字串

if length%2!=

0:return false

pair =

dict()

pair[

"("]

=")"

pair[

"["]

="]"

pair[

""

stack =

list()

stack.

(s[0])

i =1while iiflen

(stack)!=0

:

# stack中最後乙個是右括號,說明前面沒有和其對應的左括號

if stack[-1

] not in pair.

keys()

:return false

# 當前括號是右括號且與stack中最後乙個括號對應

if s[i]

==pair[stack[-1

]]: stack.

pop(

)

# 當前括號是左括號

# 當前括號是右括號,但是前乙個括號和它不對應

else

: stack.

(s[i]

)

# 當前stack是空的,前面的都配對了

else

: stack.

(s[i]

) i +=

1return

len(stack)

==0

利用python的函式,如果發現成對括號,則將其替換為空;若所有括號都成對,則最後字串為空。

class

solution

(object)

: def isvalid

(self, s)

:"""

:type s: str

:rtype: bool

"""while

'{}' in s or '()' in s or '' in s:

s = s.

replace

('{}',''

) s = s.

replace(''

,'') s = s.

replace

('()',''

)return s ==

''

力扣刷題記錄 字串 簡單 859親密字串

給定兩個由小寫字母構成的字串 a 和 b 只要我們可以通過交換 a 中的兩個字母得到與 b 相等的結果,就返回 true 否則返回 false 輸入 a ab b ba 輸出 true 輸入 a ab b ab 輸出 false 輸入 a aa b aa 輸出 true 輸入 a aaaaaaabc...

力扣刷題記錄 字串 簡單 551學生出勤記錄 I

給定乙個字串來代表乙個學生的出勤記錄,這個記錄僅包含以下三個字元 如果乙個學生的出勤記錄中不超過乙個 a 缺勤 並且不超過兩個連續的 l 遲到 那麼這個學生會被獎賞。請需要根據這個學生的出勤記錄判斷他是否會被獎賞。輸入 ppallp 輸出 true 輸入 ppalll 輸出 false class ...

力扣刷題記錄 字串 簡單 521最長特殊序列

給定兩個字串,你需要從這兩個字串中找出最長的特殊序列。最長特殊序列定義如下 該序列為某字串獨有的最長子序列 即不能是其他字串的子串行 子串行可以通過刪去字串中的某些字元實現,但不能改變剩餘字元的相對順序。空串行為所有字串的子串行,任何字串為其自身的子串行。輸入為兩個字串,輸出最長特殊序列的長度。如果...