牛客網 編程題 —— C++ 合法括號序列判斷 《完整代碼加分析》

一,題目描述

對於一個字符串,請設計一個算法,判斷其是否爲一個合法的括號串。

給定一個字符串A和它的長度n,請返回一個bool值代表它是否爲一個合法的括號串。

測試樣例:

"(()())",6

返回:true

測試樣例:

"()a()()",7

返回:false

測試樣例:

"()(()()",7

返回:false

二,程序分析

1.首先看到這個題目,能想到的就是括號匹配的問題,那麼,我們想怎麼能夠實現這樣呢,所以我們可以使用棧的方法,來進行。

2.我們可以讓括號的一遍,進行入棧,然後,繼續入棧,如果碰到另外一邊,那麼出棧,直到棧裏面的字符都能完成。

3.如果全部出棧,那麼返回true,否則,返回false。

三,程序代碼

class Parenthesis {
public:
    bool chkParenthesis(string A, int n) {
        stack<char> s;
        for(auto& e : A)
        {
            switch(e)
            {
                case '(':
                     //入棧
                      s.push(e);
                       break;
                case ')':
                   {
                        //如果,不匹配,則出棧
                        if(s.empty() || s.top() != '(')
                            return false;
                        else
                           //匹配,出棧
                            s.pop();
                    }
                    break;
                default:
                    return false;
            }
        }
        //全部返回輸出true;
        return true;
    }
};

四,程序運行結果
在這裏插入圖片描述
如果感覺不錯的話,加一個關注再走吖!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章