题目:有效的括号
使用到的知识点是栈
利用栈的FILO的特性,可以很好的对相应的括号进行匹配
比如"{ [ ( ) ] } "
第一次先压入{,接着判断下一个括号的类型,如果为左括号,则继续压入;如果为相匹配的右括号,则弹出;如果为不匹配的右括号,则直接返回false
最后如果整个栈都为空,就意味着所有的括号都得到了匹配,那么就返回true
注意:在一开始的时候,要判断一下特殊情况——
元素个数为奇数,就意味着总会有一个括号无法被匹配,直接返回false
1bool isValid(string s)
2 {
3 std::vector<char> stack;
4 if(s.size() % 2 == 1) return false;
5 for(int n = 0; n < s.size(); n++)
6 {
7 if(s[n] == '(' || s[n] == '[' || s[n] == '{') stack.push_back(s[n]);
8 else
9 {
10 if (stack.empty()) return false;
11 if(s[n] == ')' && stack.back() == '(') stack.pop_back();
12 else if(s[n] == ']' && stack.back() == '[') stack.pop_back();
13 else if(s[n] == '}' && stack.back() == '{') stack.pop_back();
14 else return false;
15 }
16 }
17 if(stack.empty()) return true;
18 return false;
19 }