給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 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 輸出 ...