家人们,看这排序,一看就很简单,对吧?不对,我觉得还挺不是很容易的,哈哈哈。
题解:
在看题目的时候,我一开始的解题思路就挺复杂的。题目说了”左括号必须以正确的顺序闭合“,我完美略过。
这道题是栈的常考题型,应该是吧。我们可以用哈希表的形式,键值对嘛,然后( [ { 这类的入栈,然后碰到其与之相对应的那就出栈,最后的情况那要是栈为空的情况就返回true.反之则返回false,不考虑( [ ) ]的这种情况,如果考虑,那就false了
代码如下:
class Solution {
public:
bool isValid(string s) {
//解题思路:([{这类的入栈,然后碰到其与之相对应的那就出栈,最后的情况那要是栈为空的情况就返回true.反之则返回false,不考虑([)]的这种情况,如果考虑,那就false了
unordered_map<char,char>pairs={
{')','('},
{']','['},
{'}','{'}
};
stack<char> stk;
for(char c:s){
if(pairs.count(c)){
if(stk.empty()||stk.top()!=pairs[c])
return false;
stk.pop();
}else{
stk.push(c);
}
}
return stk.empty();
}
};