LeetCode演算法練習之有效的括號

2021-10-03 21:58:14 字數 862 閱讀 3201

編譯器在編譯的時候,就會使用棧來做運算,儲存運算子,分配運算順序。所以說,語義分析方面的問題,很多都與棧這種資料結構有關。

分析這道題目,假設我們在做數學題算式子,去括號的時候必須去掉裡面的括號,才能去外面的括號。這道題也一樣,先去除裡面的括號,再去除外面的,如果所有的括號都可以去除,最終沒有括號了,就說明有效。反之如果有括號沒法去除,或者刪不乾淨,就是無效的。

由於去括號的時候,判斷括號是否可以去只與前乙個括號有關,分析軌跡發現完全符合棧後進先出的性質,所以使用棧。其實,這道題目堪稱棧使用的典範

棧在stl中同樣有實現,但是由於結構太過簡單比優先佇列還簡單,我們也可以手寫出來乙個棧。由於向量儲存結構太複雜,可能會影響效能,這裡我就使用了基礎的鍊錶來構建乙個簡易的棧。

其實我感覺棧更適合用鍊錶實現的,煉表頭插頭刪都只要花費常數時間,而且實現棧不需要查詢除了棧頂的元素覆蓋了鍊錶的缺點。

struct

node

};class

solution ') return

true;

return

false;

} bool

isvalid

(string s)

elseelse}}

if(top==nullptr) return

true;

return

false;}};

看看最後得分,真是乙個完美的分數!!!提交了三次,第二次記憶體100%,第三次就是這個分數。

三 leetcode之有效的括號

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

LeetCode之有效的字母異位詞

介紹 給定兩個字串 s 和 t 編寫乙個函式來判斷 t 是否是 s 的乙個字母異位詞。示例 1 輸入 s anagram t nagaram 輸出 true示例2 輸入 s rat t car 輸出 false說明 你可以假設字串只包含小寫字母。高階 如果輸入字串包含 unicode 字元怎麼辦?你...

Leetcode刷題之 有效的括號

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