03 有效的括號(leecode 20)

2021-10-18 12:05:03 字數 1413 閱讀 7479

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

有效字串需滿足:

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

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

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

示例 1:

輸入: 「()」

輸出: true

示例 2:

輸入: 「(){}」

輸出: true

示例 3:

輸入: 「(]」

輸出: false

示例 4:

輸入: 「([)]」

輸出: false

示例 5:

輸入: 「」

輸出: true

這裡有三種不匹配的情況,

(1)第一種情況,字串裡左方向的括號多餘了 ,所以不匹配。

(2)第二種情況,括號沒有多餘,但是 括號的型別沒有匹配上。

(3)第三種情況,字串裡右方向的括號多餘了,所以不匹配。

第一種情況:已經遍歷完了字串,但是棧不為空,說明有相應的左括號沒有右括號來匹配,所以return false

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

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

那麼什麼時候說明左括號和右括號全都匹配了呢,就是字串遍歷完之後,棧是空的,就說明全都匹配了。

class

solution')

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

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

else

if(st.

empty()

|| st.

top(

)!= s[i]

)return

false

;else

== s[i],彈出元素

st.pop();

}//第一種情況,字串已經遍歷完,棧不為空,說明左括號沒有找到對應的右括號

return st.

empty()

;}};

Leecode有效的括號

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

Leecode 2 兩數相加

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...

leecode 2 兩數相加

給出兩個 非空 的鍊錶用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式儲存的,並且它們的每個節點只能儲存 一位 數字。如果,我們將這兩個數相加起來,則會返回乙個新的鍊錶來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例 輸入 2 4 3 5 6 4 輸出 ...