2020 11 1 有效的括號 簡單題20

2021-10-10 07:48:29 字數 1620 閱讀 1507

【思路】

對於對稱括號這種問題,我們很容易想到用棧解決。

當括號是左括號時,入棧;當括號是右括號時,判斷其是否與棧頂的左括號匹配,是,棧頂元素出棧,繼續判斷下乙個,否,返回false。

【**1】

class

solution':

if((char

)stack.

peek()

=='}else

return

false;}

}if(stack.

empty()

)return

true

;else

return

false;}

}

【**2】

class

solution')

;else

if(stack.

isempty()

|| c != stack.

pop())

return

false;}

return stack.

isempty();}}

【改進】

class

solution

mappairs =

newhashmap

()','}

; deque

stack =

newlinkedlist

();for

(int i =

0; i < n; i++

) stack.

pop();

//否則,出棧

}else

}return stack.

isempty();}}

【總結】**1和**2沒用雜湊表,當時考慮括號只給了3個型別,就直接switch…if了。如果為了使程式可擴充套件性更強的話,應該用官方**:雜湊表。

時間複雜度:o(n),其中 n 是字串 s 的長度。表示時間複雜度和輸入呈線性關係。

空間複雜度:o(n+∣σ∣),其中 σ 表示字符集,本題中字串只包含 6 種括號,∣σ∣=6。棧中的字元數量為 o(n),而雜湊對映使用的空間為 o(∣σ∣),相加即可得到總空間複雜度。

棧和佇列:

stack,deque,queue對比

為什麼使用deque而不使用stack構造棧

建立棧stack stack = new stack();

linkedlist stack = new linkedlist<>();

deque stack = new linkedlist();

入棧stack.push(』]』);

檢視棧頂元素

stack.peek();

返回棧頂元素,並將其出棧

stack.pop();

判斷棧頂是否為空

stack.isempty();

有效的括號(簡單)

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 false 示例 5 輸入 輸...

LeetCode初級題 有效的括號

有效的括號 題目要求 給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 左括號必須用相同型別的右括號閉合。左括號必須以正確的順序閉合。注意空字串可被認為是有效字串。示例 1 輸入 輸出 true 示例 2 輸入 輸出 true 示例 3 輸入 輸出 false 示例 4 輸入 輸出 fals...

Leetcode刷題 有效的括號

思路 先把符號輸入字典,每對符號的左半邊設定為位置,右半邊設定為值,方便後續進行比對。利用出入棧的思想,設定棧stack,將字串中的值cpush入棧直至c不在字典裡。然後再將棧裡的值pop出來與c對比,注意此時pop出來的值是字典的位置索引dic stack.pop 所對應的值應該是符號的右半邊。如...