2020 02 03 演算法學習記錄 有效的括號

2021-10-02 12:51:21 字數 1669 閱讀 9236

給定乙個只包括 『(』,』)』,』』,』[』,』]』 的字串,判斷字串是否有效。

有效字串需滿足:

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

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

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

示例 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通過線性變換將原始資料變換為一組...