資料結構與演算法常規操作(棧2)7 有效的括號

2021-10-08 06:47:22 字數 1164 閱讀 1865

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

有效字串需滿足:

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

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

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

/**

* @author 進擊的小綿羊

* @description:

* 1. 初始化棧 s。

* 2. 一次處理表示式的每個括號。

* 3. 如果遇到開括號,我們只需將其推到棧上即可。這意味著我們將稍後處理它,讓我們簡單地轉到前面的子表示式。

* 4. 如果我們遇到乙個閉括號,那麼我們檢查棧頂的元素。如果棧頂的元素是乙個相同型別的左括號,那麼我們將它從棧中彈出並繼續處理。否則,這意味著表示式無效。

* 5.如果到最後我們剩下的棧中仍然有元素,那麼這意味著表示式無效。

* 時間複雜度:o(n),因為我們一次只遍歷給定的字串中的乙個字元並在棧上進行o(1)的推入和彈出操作。

* 空間複雜度:o(n),當我們將所有的開括號都推到棧上時以及在最糟糕的情況下,我們最終要把所有括號推到棧上。例如:((((((((((。

*/class solution

public boolean isvalid(string s)

/*** initialize a stack to be used in the algorithm.

*/stackstack = new stack<>();

for (int i = 0; i < s.length(); i++)

} else

} /**

* if the stack still contains elements, then it is an invalid expression.

*/return stack.isempty();

} public static void main(string args) {} ";

boolean valid = new solution().isvalid(str);

system.out.println(valid);

}}

資料結構與演算法 棧 定義與操作

include include 棧 複習 adt stack is operations 1.stack createemptystack void 建立空棧 2.int isemptystack void 判斷是否為空棧 3.void push stack st,datatype x 向棧st的棧...

資料結構與演算法練習27

和課程表1的思路一模一樣,只是加個返回陣列。我這是用鍊錶,每次從佇列中彈出數時就加入鍊錶中,最後返回之前先判斷是否可以學完,再返回。public int findorder int numcourses,int prerequisites return lgx.toarray int a numco...

資料結構與演算法《棧》

概念 棧 stack 又名堆疊,它是一種運算受限的線性表。其限制是僅允許在表的一端進行插入和刪除運算。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除掉,使...