問題描述
給定乙個只包含三種字元的字串:( ,) 和 *,寫乙個函式來檢驗這個字串是否為有效字串。有效字串具有如下規則:
-任何左括號 ( 必須有相應的右括號 )。
-任何右括號 ) 必須有相應的左括號 ( 。
-左括號 ( 必須在對應的右括號之前 )。
-*可以被視為單個右括號 ) ,或單個左括號 ( ,或乙個空字串。
-乙個空字串也被視為有效字串。
例 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 輸入 輸...