1. 程式人生 > >【去哪兒】表示式合法判斷

【去哪兒】表示式合法判斷

題目描述

寫一段程式碼,判斷一個包括'{','[','(',')',']','}'的表示式是否合法(注意看樣例的合法規則。)

給定一個表示式A,請返回一個bool值,代表它是否合法。

測試樣例:

"[a+b*(5-4)]*{x+b+b*(({1+2}))}"
返回:true
#include <unordered_map>
class ChkExpression {
public:
    bool chkLegal(string str) {
        // write code here
        unordered_map<char, char> table;
        table['{'] = '}';
        table['('] = ')';
        table['['] = ']';
        stack<char> temp;
        
        for(auto item:str)
        {
            if(item == '['|| item == '{' || item == '(')
                temp.push(item);
            else
                if(item == ']'|| item == '}' || item == ')')
                {
                    if(temp.size()>0)
                       {
                            char top = temp.top();
                            if(table[top] == item)
                                temp.pop();
                               else
                                   return false;
                       }
                    else
                        return false;
                 }
        }
        if(temp.size()>0)
            return false;
        else
            return true;
    }
};