力扣第二十題 20 有效的括號

2021-10-06 09:59:05 字數 1171 閱讀 7633

20.有效的括號

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

有效字串需滿足:

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

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

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

示例 1:

輸入: 「()」

輸出: true

示例 2:

輸入: 「(){}」

輸出: true

示例 3:

輸入: 「(]」

輸出: false

示例 4:

輸入: 「([)]」

輸出: false

示例 5:

輸入: 「」

輸出: true

這個題我最開始是沒打算用棧的,一開始就就打算把一些特殊情況解決了,比如括號數為奇數,左括號數 != 右括號數,這兩種情況直接 return false ,還有就是字串為空的和字元個數為一的直接 return true,接下來就是解決一般情況,但是最後我沒解決,感覺好複雜,這思路簡單,先特殊,後一般,但是最後解決起來感覺很困難,**量很大。

後來我在網上了參考了一些老哥的解題思路和答案,挖槽,用棧啊,我第一時間 沒想到用棧,那肯定是**碼少了,頭髮掉少了。

上**

bool isvalid

(char

* s)

//'('與')'的ascii碼相差1,'['與']' 和'}'與'}'相差2

//匹配成功棧頂的右括號就會出棧,棧頂指標指向上一層括號

else

if(s[i]

== stack[top]+1

|| s[i]

== stack[top]+2

)//當可以執行到這裡時,那就說明s[i]一定為左括號,而且前面沒有能夠匹配的右括號

else

}free

(stack)

;//當棧元素全部出棧,說明沒有多餘的括號,全部匹配成功 !top = 1;true;

//當棧元素還有些沒有出棧,說明有多餘的括號 !top = 0;false;

return

(!top)

;}

有錯誤歡迎指出,有問題歡迎諮詢。

力扣 20 有效的括號

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

力扣 20 有效的括號

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

有效的括號(力扣 20)

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