【简单算法】48.有效的括号
2018-05-06 23:29
134 查看
题目:
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: "()" 输出: true 示例 2: 输入: "()[]{}" 输出: true 示例 3: 输入: "(]" 输出: false 示例 4: 输入: "([)]" 输出: false 示例 5: 输入: "{[]}" 输出: true
解题思路:
用两个栈即可实现。
stack<char> left;
stack<char> right;
将所有括号依次压入left栈中,
1.如果发现left栈顶为右括号,则将其压入右栈。
2.如果发现left栈顶为左括号,则查看left与right栈顶的括号是否匹配,如果匹配,则匹配的括号同时出栈,继续步骤1,否则则认为该字符串非法。
代码实现:
class Solution { public: bool isValid(string s) { stack<char> left; stack<char> right; for(int i = 0;i < s.size(); ++i){ left.push(s[i]); } while(!left.empty()){ if(left.top() == ')'||left.top() == ']'|| left.top() == '}'){ right.push(left.top()); left.pop(); }else{ if(right.empty()){ return false; } char l = left.top(); char r = right.top(); if((l == '(' && r == ')')|| (l == '[' && r == ']')|| (l == '{' && r == '}')){ left.pop(); right.pop(); }else{ return false; } } } if(!right.empty()){ return false; } return true; } };
相关文章推荐
- LintCode python 小白-简单题-423有效的括号序列
- lintcode&九章算法——Google面试题 | 有效括号字符串 ? 待解决
- 一个简单有效的产生随机数且不重复的小算法--Robert Floyd
- 朴素贝叶斯分类器--一种简单有效的常用分类算法
- 一个51单片机的键盘扫描程序,算法简单有效
- 【LeetCode-面试算法经典-Java实现】【032-Longest Valid Parentheses(最长有效括号)】
- SSE图像算法优化系列二十:一种快速简单而又有效的低照度图像恢复算法。
- 算法爱好者——算法题:有效的括号序列
- 简单算法——使用栈实现括号匹配检验
- 实现一种算法,打印n对括号的全部有效组合(即左右括号正确配对)
- 有效背单词的一个简单算法(一)——SugarMemo算法学习记录
- 最长的有效括号内子括号的长度(来自 庞果)修改后的算法
- 简单有效的连通区域提取算法实现
- 【LeetCode-面试算法经典-Java实现】【032-Longest Valid Parentheses(最长有效括号)】
- 简单的括号匹配算法
- 算法分析: 最长有效括号的长度
- 数据结构与算法之--简单排序:冒泡、选择和插入
- 简单易懂讲解simhash算法 hash 哈希
- 几个简单的数据点平滑处理算法
- 【简单算法】17.字符串转整数(atoi)