有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
一、陣列
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 查詢到乙個小於基準值的元素,將兩者相交換,再從左向右查詢乙個大於基準值的元素,再...