leetcode20 有效的括號

2021-10-23 14:00:12 字數 2328 閱讀 6754

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

有效字串需滿足:

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

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

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

示例 1:

輸入: "()"

輸出: true

示例 2:

輸入: "(){}"

輸出: true

示例 3:

輸入: "(]"

輸出: false

示例 4:

輸入: "([)]"

輸出: false

示例 5:

輸入: ""

輸出: true

僅用到棧的思路,三種return false的情況:

① 左邊的括號多餘(棧中還有多餘的)

② 中間匹配錯誤

③ 右邊的括號多餘(也就是棧中沒有多餘的符號可以匹配了)

方法一:hashmap

class

solution

unordered_map<

char

,char

> pairs =,,

','}

; stack<

char

> stk;

for(

char ch: s)

stk.

pop();

}else

}return stk.

empty()

;}};

方法二:僅用到棧

class

solution')

;else

if(s[i]

=='['

) st.

push

(']');

// 第三種情況 是遍歷字串匹配的過程中,棧已經為空了,沒有匹配的字元了,說明右括號沒有找到對應的左括號 return false

// 第二種情況 遍歷字串匹配的過程中,發現棧裡沒有我們要匹配的字元。所以return false

else

if(st.

empty()

|| st.

top(

)!= s[i]

)return

false

;else st.

pop();

// st.top() == s[i]

}// 第一種情況 此時我們已經遍歷完了字串,但是棧不為空,說明有相應的左括號沒有右括號來匹配,所以return false,否則就return true

return st.

empty()

;}};

for

(char ch: s)

這裡的for(char c:s)就是定義乙個遍歷字元c,讓它分別等於字串陣列s裡面的各個字元,然後執行下面的語句,當c被賦值為s裡面所有字元各一次後,就會退出這個迴圈.

count

()

python count() 方法用於統計字串裡某個字元出現的次數。可選引數為在字串搜尋的開始與結束位置。

該方法返回子字串在字串**現的次數。

if語句的用法
一般格式:if(表示式) 語句;

語義是:如果表示式的值為真,則執行其後的語句,否則不執行該語句。語句可以是單條語句,也可以是用花括號{}包括起來的復合語句。

一般格式:

if(表示式)

語句1;

else

語句2;

語義是:如果表示式的值為真,則執行語句1,否則執行語句2 。語句1和語句2可以是復合語句。

一般形式為:

if(表示式1)

語句1;

else if(表示式2)

語句2;

else if(表示式3)

語句3;

…else if(表示式m)

語句m;

else

語句n;

語義是:依次判斷表示式的值,當出現某個值為真時,則執行其對應的語句。然後跳到整個if語句之外繼續執行程式。 如果所有的表示式均為假,則執行語句n。然後繼續執行後續程式。

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 輸入 輸出...