有效括號的兩種思路

2021-08-31 10:00:03 字數 1010 閱讀 8420

有效字串需滿足:

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

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

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

一、陣列

1、空字串可被認為是有效字串,單獨判斷

3、字串的長度必須為偶數,否則不是有效括號

2、利用替換的思想

(1)如果() {} 成對出現,用」「替換,相當於刪除

(2)剩下的,如果有成對的,繼續替換

(3)重複length/2次後,用isempty()判斷。為空,是有效字段

否則,不是有效字段

public static boolean isvalid(string s)   替換成"",其實就是把它們從陣列中刪除;

* 如果滿足條件,繼續進行替換,知道迴圈結束*/

while (count0)

return false;

return true;}}

return false;

}

二、棧

1、空字串可被認為是有效字串,單獨判斷

2、首先,利用chatat()將字串傳入棧stack中

3、利用for迴圈,乙個位元組乙個位元組逐個判斷

(1)若第乙個為 ( [ } 其中乙個,利用push()傳入到stack1中

(2)若第二個位元組為或者stack.peek()為配對的 ) ] } ,stack1.pop()

(3)繼續判斷

4、若為有效括號,stack1為空;否則,不為空

public static boolean isvalid(string s) 

if(s.isempty())

else

if (c == '[' && (stack.peek() == ']' || c1==']' ))

if (c == '' || c1=='}' ))}}

return stack1.isempty();

}

括號配對問題的兩種思路總結

描述現在,有一行括號序列,請你檢查這行括號是否配對。輸入 第一行輸入乙個數n 0輸出 每組輸入資料的輸出佔一行,如果該字串中所含的括號是配對的,則輸出yes,如果不配對則輸出no 樣例輸入 3 樣例輸出 no noyes 學過棧,就知道這道題應該用棧解決,附上 include include inc...

兩種儲存思路

儲存 寬高 每個畫素的 rgba 值 位圖 儲存 寬高 每個幾何圖形 向量圖 一張,如果幾何圖形關係明確,用向量圖來儲存,不但空間占用少,而且資訊比位圖全。因為位圖沒有表達出幾何圖形的關係,在縮放時位圖只好失真。同理,儲存一系列資料時 如果不知道資料的關係,我們只好 像點陣圖一樣 把所有資料老老實實...

快速排序的兩種思路

選取最左端 low 為基準值,以公升序為例 從右向左 high low 查詢到乙個小於基準值的元素,再從左向右查詢乙個大於基準值的元素,再將兩者相交換。while arr j temp low從右向左 high low 查詢到乙個小於基準值的元素,將兩者相交換,再從左向右查詢乙個大於基準值的元素,再...