Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
The brackets must close in the correct order, "()"
and "()[]{}"
are all valid but "(]"
and "([)]"
are not.
题解: 典型的STL stack 应用。注意边界条件。
1 class Solution { 2 public: 3 bool isValid(string s) { 4 stack<char> st; 5 if(s.size()<=1 || s.size()%2) return false; 6 7 for(int i=0;i<s.size();i++) 8 { 9 if(s[i]=='(' || s[i]=='[' || s[i]=='{') st.push(s[i]); 10 else if(st.empty()) 11 { 12 return false; 13 } 14 else 15 { 16 if( (s[i]==')' && st.top()=='(') || 17 (s[i]==']' && st.top()=='[') || 18 (s[i]=='}' && st.top()=='{') ) 19 st.pop(); 20 else 21 return false; 22 } 23 } 24 if(!st.empty()) return false; 25 else return true; 26 } 27 };
转载请注明出处: http://www.cnblogs.com/double-win/ 谢谢!