給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
1:輸入: 「([)]」
輸出: false
2:輸入: 「」
輸出: true
在最開始看到該題時是想將輸入的字串都先放入棧中,然後對棧進行操作;但是這種方法有點複雜。
後邊實在想不出更好的方法,就看了下別人的解題思路(個人演算法方面還是太弱雞啊),是將棧作為乙個臨時工具使用,而不是將整個輸入作為棧的元素然後進行操作。
作為第一題也算是學到了一點:資料結構有時候作為臨時儲存才是解決問題的關鍵。
public
class
validparentheses
()")
; system.out.
println
("***** :"
+ a);}
private
boolean
isvalid
(string s)
if(s =="")
stack
stack =
newstack
();int length = s.
length()
;for
(int i =
0; i < length; i++
)elseif(
isparentheses
(stack.
peek()
, temp)
)else}if
(stack.
empty()
)return
false;}
private
boolean
isparentheses
(char left,
char right)')
return
false;}
}
演算法 有效的括號
偽 1.得到字串.2.建立乙個linkedlist 用來模擬stack 2.非空判斷,空返回true 3.遍歷字串 如果第一次碰到三個括號 第乙個括號是右括號必定是錯誤的 如果碰到左括號,給linkedlist中新增對應的右括號,碰到右括號,判斷linkedlist末尾的右括號是否與其匹配,匹配則刪...
演算法 有效的括號
給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...
演算法 有效的括號
有效的括號 核心思路 最左邊的右括號的,必定與不超過右括號的最右邊的左括號匹配 棧頂元素 解法一 最左邊的右括號的前乙個括號必定是相匹配的右括號 思路 1.如果長度為奇數返回false,如果左棧為空的時,出現右括號直接返回false 2.從左到右遍歷每個括號,如果是左括號就入棧,直到遇到右括號 第乙...