首页 > 代码库 > leetcode -- Valid Parentheses

leetcode -- Valid Parentheses

不要因为走的太远而忘记我们为什么出发

[问题描述]

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.

[解题思路]

经典括号匹配问题,使用栈模拟即可

 1 bool Solution::isValid(std::string s) 2 { 3     std::stack<char> tmp; 4     for (int i = 0; i < s.length(); i ++){ 5         if (s[i] == ( || s[i] == [ || s[i] == {) 6             tmp.push(s[i]); 7         else if (s[i] == )){ 8             if (tmp.size() > 0 && tmp.top() == () 9                 tmp.pop();10             else11                 return false;12         }13          else if (s[i] == ]){14             if (tmp.size() > 0 && tmp.top() == [)15                 tmp.pop();16             else17                 return false;18         }19          else if (s[i] == }){20             if (tmp.size() > 0 && tmp.top() == {)21                 tmp.pop();22             else23                 return false;24         }25     }26     return tmp.size() == 0;27 }