标签:leetcode
问题描述
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.
解决方案
class Solution {
public:
bool popAndTest( stack<char> &chStack, char ch ) {
if( chStack.empty() ) {
return false;
}
char top = chStack.top();
chStack.pop();
if( top != ch ) {
return false;
} else {
return true;
}
}
bool isValid(string s) {
if( s.size() % 2 != 0 ) {
return false;
}
stack<char> charStack;
for( auto ch : s ) {
if( ch == ')' ) {
if( !popAndTest(charStack, '(') ) {
return false;
}
}
else if( ch == ']' ) {
if( !popAndTest(charStack, '[') ) {
return false;
}
}
else if( ch == '}' ) {
if( !popAndTest(charStack, '{') ) {
return false;
}
} else {
charStack.push( ch );
}
}
if( !charStack.empty() ) {
return false;
} else {
return true;
}
}
};标签:leetcode
原文地址:http://blog.csdn.net/senlinzm/article/details/39010753