動手刷LeetCode 判斷括號有效

2021-10-03 22:40:06 字數 1271 閱讀 9670

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

有效字串需滿足:

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

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

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

字串知識點:string s:常見操作方法;

解法一:棧配對法 ;這是乙個有技術含量的演算法

定義res作為乙個棧

遍歷整個字串,將每個左括號加入res

當發現右括號時,就查棧頂元素:

若不是其對應的左括號,直接返回false;

若是,該元素出棧,檢查字串中下乙個元素;

class

solution

;// vector容器即可當做乙個棧空間,?只是來壓棧第乙個字元

int i ;

// 定義迴圈變數

int len=s.

length()

;// 字串長度

char c = s[0]

;// 移動接收字串

char cc;

//接收棧頂元素

if(len%2==

1)for(i=

0;i||c==

')')

else

}else}if

(ans.

back()

=='?'

)else}}

;

如果 c 是左括號,則入棧 pushpush;

否則通過雜湊表判斷括號對應關係,若 stack 棧頂出棧括號 stack.pop() 與當前遍歷括號 c 不對應,則提前返回 falsefalse。

class

solution

:def

isvalid

(self, s:

str)

->

bool

: dic =',

'[':

']',

'(':

')',

'?':

'?'}

stack =

['?'

]for c in s:

elif dic[stack.pop()]

!= c:

return

false

return

len(stack)

==1

既然要做這件事情,就要付出認真的態度來對待,不要幻想再看一遍,只是自我安慰而已;第一次就要努力做到最好;

Leetcode刷題之括號

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

leetcode刷題(51) 22 括號生成

給出 n 代表生成括號的對數,請你寫出乙個函式,使其能夠生成所有可能的並且有效的括號組合。例如,給出 n 3,生成結果為 思路 只要有左括號就可以新增 class solution public void helper int left,int right,string str if left 0 ...

Leetcode刷題 有效的括號

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