栈相关解法

  • 题目意思有点没有描述清楚,但从AC情况来看,我理解正确了
  • 1、只用是(和)括号,不需要考虑{}和[]这样的
  • 2、出现了除了()之外的字符,就不合法
  • 3、要满足括号匹配

下面代码,顺路考虑了代码“健壮性”

  • throw "invalid case";
class Parenthesis {
public:
    bool chkParenthesis(string A, int n) {
        // write code here

        int len=A.size();
        if( len<0 )
        {
            //代码健壮性,不合法样例
            throw "invalid case";
        }
        if( 0==len )
        {
            return true;
        }
        stack<char> st;
        for(int i=0; i<len; ++i)
        {
            if( '('==A[i] )
            {
                st.push( A[i] );
            }
            else if( ')'==A[i] )
            {
                if( st.size()<=0 )
                {
                    return false;
                }
                else
                {
                    st.pop();
                }
            }
            else
            {
                //不合法数字
                return false;
            }
        }

        if( st.empty() )
        {
            return true;
        }
        else
        {
            return false;
        }
    }
};