LeetCode20有效括號

2021-08-27 18:50:01 字數 1785 閱讀 9330

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

有效字串需滿足:

左括號必須用相同型別的右括號閉合。

左括號必須以正確的順序閉合。

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

示例 1:

輸入: "()"

輸出: true

示例 2:

輸入: "(){}"

輸出: true

示例 3:

輸入: "(]"

輸出: false

示例 4:

輸入: "([)]"

輸出: false

示例 5:

輸入: ""

輸出: true

思路:

如果字串長度為奇數,則一定存在無效括號;

為方便處理,將括號對映為方便處理的數字,使對應括號之和恆定;

將給定字串使用對映表轉換為對應數字列表;

定義乙個棧,遍歷2中得到的列表,當棧為空時,從列表彈出最後乙個元素,壓入棧頂;如果棧不為空,判斷棧頂元素與列表末尾元素是否為成對括號(此處通過判斷兩元素之和判斷),若是成對括號,則彈出棧頂元素,彈出列表末尾元素,若不為成對括號,彈出列表末尾元素,將其壓入棧頂;

列表遍歷完成後,判斷棧是否為空,若為空則說明所有括號均合法,否則不合法。

class solution():

def isvaild(self,s):

if len(s)%2==1:

return false

chr=dict(zip([''],[x for x in range(6)]))

chr2=

temp=

for x in s:

while chr2:

if temp:

if temp[-1]+chr2[-1]==5:

temp.pop()

chr2.pop()

else:

else:

if temp:

return false

return true

try1=solution()

s='{}'

print(try1.isvaild(s))

class solution 

//用棧儲存 (,[,:',' else ,那麼就要跟棧中的元素比較

//首先要判斷棧是否為空,如果輸入的字元是 )() ,那麼當遍歷到第乙個)時,棧為空

if(stack.size()==0)

//取出棧頂的元素

character tmp = stack.pop();

//假設當前遍歷到的元素是 ],那麼從map中取到的value就是 [

//如果棧頂的元素是 (,則不匹配返回false,否則繼續

if(map.get(c)!=tmp)

}} //返回的時候還要判斷棧是否為空

//如果輸入的字串是 (((,那麼最後棧就不為空

return (stack.empty()? true : false);

}}

Leetcode 20 有效括號

leetcode 20 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true pthon 列表 如 a a b 字典 如 dict not ...

leetcode 20 有效括號

怎麼減少if語句,判斷是否是某乙個值,將值存進map中,是否在map中,若在,則是 匹配用map 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出...

leetcode 20 有效括號

有效的括號 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 ...