休息两天,今天继续刷LeetCode第20题,有效的括号,这是一个典型的数据结构的题目,判断括号使用是否正确。
分析:
判断括号使用是否正确,使用栈,遍历字符串中所有字符,遇到左括号,就进栈,遇到右括号,就出栈。如果互相不匹配,就返回false,否则,返回true。但是在判断左右是否匹配的时候,可以使用if判断语句加上&&,但是这样毕竟不易阅读,可读性差,这时使用map映射就可以简单直观,增加代码可读性。
问题:
1、栈的定义;
unordered_map<char,int> mathch={{‘a’,2},{‘d’,3}};
2、可读性的要求;
附上代码:
class Solution {
public:
bool isValid(string s) {
stack<char> myStack;
unordered_map<char,char> match={{'(',')'},{'{','}'},{'[',']'}};
for(auto& i:s)
{
if(i=='('||i=='{'||i=='[')
myStack.push(i);
else
{
if(myStack.empty())
return false;
char top=myStack.top();
myStack.pop();
if(match[top]!=i)
return false;
}
}
return myStack.size()==0;
}
};