题目描述:
Given a string containing just the characters '(', ')'
, '{'
,'}'
, '['
and ']'
, determine if the input string is valid.
Example
题目思路:
The brackets must close in the correct order, "()"
and "()[]{}"
are all valid but "(]"
and "([)]"
are not.
这是一道典型的stack应用题,就不多说了,直接上code。
Mycode (AC = 26ms):
class Solution {
public:
/**
* @param s A string
* @return whether the string is a valid parentheses
*/
bool isValidParentheses(string& s) {
// Write your code here
stack<char> helper;
int idx = 0;
// use the stack to get matched pairs
while (idx < s.length()) {
// push the left brackets
if (s[idx] == '(' || s[idx] == '[' || s[idx] == '{') {
helper.push(s[idx]);
}
// for right brackets, pop out the left bracket on the top
// of stack to see if they are a matched pair
else {
if (!helper.empty()) {
char top = helper.top();
helper.pop();
if (!ismatch(top, s[idx])) {
return false;
}
}
else {
return false;
}
}
idx++;
}
//cout << helper.size();
return helper.empty();
}
bool ismatch(char a, char b) {
return (a == '(' && b == ')') ||
(a == '[' && b == ']') ||
(a == '{' && b == '}');
}
};