給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。
注意空字串可被認為是有效字串。
示例 1:
輸入: 「()」
輸出: true
示例 2:
輸入: 「(){}」
輸出: true
示例 3:
輸入: 「(]」
輸出: false
示例 4:
輸入: 「([)]」
輸出: false
示例 5:
輸入: 「」
輸出: true
思路一:
暴力迴圈解法:
class
solution
char
schararr = s.
tochararray()
; list
temp =
newarraylist
();for
(int i =
0; i < schararr.length; i++
)else
break
;case
"]":
if(temp.
size()
>
0&& temp.
get(temp.
size()
-1).
equals
("["))
else
break
;case
"}":
if(temp.
size()
>
0&& temp.
get(temp.
size()
-1).
equals("
else
break;}
}if(temp.
size()
==0)return
false;}
}
思路二:
class
solution
mapmap =
newhashmap
<
>()
; map.
put(
'(',
')')
; map.
put('')
; map.
put(
'[',
']')
; stack
stack =
newstack
<
>()
;for
(int i =
0; i < s.
length()
; i++)if
(!stack.
empty()
&& c == map.
get(stack.
pop())
)return
false;}
return stack.
empty()
;}}
演算法學習記錄
排序演算法複雜度 層序遍歷 雙端佇列 演算法流程 特例處理 當樹的根節點為空,則直接返回空列表 初始化 列印結果空列表 res 包含根節點的雙端佇列 queue bfs 迴圈 當 queue 為空時跳出 新建列表 temp 用於臨時儲存當前層列印結果 當前層列印迴圈 迴圈次數為當前層節點數 即 qu...
Manacher s演算法學習記錄
在leetcode上刷題時遇到了這個問題,認真學習了該演算法。參考 演算法共分為三步 1.將字串a轉化為奇數長度字串b 2.計算字串b中以每乙個元素為中心的回文子串長度得到數字陣列c 3.獲取c中的最大值並依據此最大值擷取字串a得到目標最長的回文字串。直接上關鍵 預處理原始字串,將其轉化為奇數長度。...
PCA演算法學習記錄
重要宣告 以下內容主要參考吳恩達機器學習課程和張洋的pca數學原理文章 降維 dimensionality reduction 降維的目的 1 資料壓縮 2 視覺化資料。pca principal component analysis 是一種常用的資料分析方法。pca通過線性變換將原始資料變換為一組...