20. 有效的括号(栈的使用)
Posted xiazhenbin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20. 有效的括号(栈的使用)相关的知识,希望对你有一定的参考价值。
题目描述:括号(小括号、中括号、大括号)的匹配
传送门:https://leetcode-cn.com/problems/valid-parentheses/
解法:《数据结构》中作为例子引出栈的概念。用一个栈维护,从左到右扫描目标字符串,如果括号匹配,即满足三种情况:
①、s[i] == ‘)‘ && Stack.top() == ‘(‘
②、s[i] == ‘]‘ && Stack.top() == ‘[‘
③、s[i] == ‘}‘ && Stack.top() == ‘{‘
如果括号不匹配,就把当前字符压入栈中。扫描完目标字符串后,观察栈中是否还有元素,如果存在,则不是有效字符串。
class Solution { public: bool isValid(string s) { stack<char> Stack; int len = s.length(); for(int i = 0; i < len; i ++ ){ if (Stack.empty()) { Stack.push(s[i]); continue; } else if (s[i] == ‘)‘ && Stack.top() == ‘(‘){ Stack.pop(); continue; } else if (s[i] == ‘]‘ && Stack.top() == ‘[‘){ Stack.pop(); continue; } else if (s[i] == ‘}‘ && Stack.top() == ‘{‘){ Stack.pop(); continue; } else{ Stack.push(s[i]); //括号不匹配而 } } if (!Stack.empty()) return false; return true; } };
以上是关于20. 有效的括号(栈的使用)的主要内容,如果未能解决你的问题,请参考以下文章