423. 有效的括號序列

給定一個字符串所表示的括號序列,包含以下字符: '(', ')', '{', '}', '[' and ']', 判定是否是有效的括號序列。

樣例

括號必須依照 "()" 順序表示, "()[]{}" 是有效的括號,但 "([)]"則是無效的括號。

利用堆棧

建立一個堆棧,然后遍歷字符串,如果是'(','{'.'[',則入棧,否則判斷當前字符串和棧頂元素是否是一對括號(這可以寫一個輔助函數(shù)),要注意的是,需要提前判斷棧是否為空,為空的時候取top是違法的的,所以只要為空就入棧,然后執(zhí)行下一次循環(huán),而且,只要循環(huán)過程中出現(xiàn)一次棧頂元素和當前元素不匹配的情況,就可以跳出循環(huán)返回false了。這樣就比較清楚了:

 bool isValidParentheses(string &s) {
        stack<char>  res;
       
        for(int i=0;i<s.size();i++)
        {
            if(res.empty())             //棧為空,入棧,下一次循環(huán)
            {   res.push(s[i]);
                continue;
            }
            if(s[i]=='('||s[i]=='['||s[i]=='{')   //如果是左括號,則入棧
                res.push(s[i]);
            else if(isBracket(res.top(),s[i]))     //匹配的話,出棧
                res.pop(); 
            else                                  //不匹配的話就不合法
                return false;
           
        }
        return res.empty();
        // write your code here
    }
    
    bool isBracket(char &left,char &right)
    {
        if(left=='('&&right==')')   return true;
        if(left=='['&&right==']')   return true;
        if(left=='{'&&right=='}')   return true;
        else 
        return false;
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容