有效的括號字串

2021-08-18 17:35:02 字數 842 閱讀 4143

問題描述

給定乙個只包含三種字元的字串:( ,) 和 *,寫乙個函式來檢驗這個字串是否為有效字串。有效字串具有如下規則:

-任何左括號 ( 必須有相應的右括號 )。

-任何右括號 ) 必須有相應的左括號 ( 。

-左括號 ( 必須在對應的右括號之前 )。

-*可以被視為單個右括號 ) ,或單個左括號 ( ,或乙個空字串。

-乙個空字串也被視為有效字串。

例 1:

輸入: 「()」

輸出: true

示例 2:

輸入: 「(*)」

輸出: true

示例 3:

輸入: 「(*))」

輸出: true

解題思路:

利用兩個棧,乙個存放左括號及索引,乙個存放及索引。每次出現右括號時,首先檢查是否存在左括號,存在則左括號出棧,否則,檢查是否存在「 * 」 存在,存在則出棧,否則返回false。最後,判斷星號能否代替右括號。根據索引位置來判斷。

class solution 

if(ch[i] == '*')

if(ch[i] == ')')

if(!left.isempty())else

continue;}}

if(left.size() > star.size())

//判斷其代替左括號的情況

while(!left.isempty())

return

true;

}}

字串 最長有效括號

給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2 解釋 最長有效括號子串為 示例 2 輸入 輸出 4 解釋 最長有效括號子串為 思路 記錄左右括號的個數 相等了就比較更新答案 如果count2 count1 就結算 從0開始 注意 還要從右向左遍歷!不然會漏掉...

LeetCode 字串 有效的括號

給定乙個只包括 的字串,判斷字串是否有效。有效字串需滿足 示例 輸入 輸出 true 輸入 輸出 false 輸入 輸出 true 用棧來做。遍歷輸入的字串序列,當當前元素為右括號 並且棧頂元素為當前元素對應的左括號 if s 0 s 0 s 0 stackstk stk.push s 0 for ...

20 有效的括號 (對括號字串進行有效判定)

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