栈相关解法
- 题目意思有点没有描述清楚,但从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; } } };