Lintcode 有效的括号序列
来源:互联网 发布:三菱plc仿真教学软件 编辑:程序博客网 时间:2024/06/05 01:10
给定一个字符串所表示的括号序列,包含以下字符: ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, 判定是否是有效的括号序列。
您在真实的面试中是否遇到过这个题? Yes
样例
括号必须依照 “()” 顺序表示, “()[]{}” 是有效的括号,但 “([)]”则是无效的括号。
题目很简单,用栈就OK了。
但是为了不让代码很丑而且让这个程序有一定扩展性,所以代码写多了些。
class Solution {public: /* * @param s: A string * @return: whether the string is a valid parentheses */ //字符集 const string PAIRA = "([{"; const string PAIRB = ")]}"; //检查字符是否在字符集中 bool in_sym(const char sym, const string& syms) { for(auto i : syms) { if(i == sym) { return true; } } return false; } //查找字符出现的位置 int find_char(const char a, const string& s) { for(int i = 0; i < s.length(); i++) { if(a == s[i]) { return i; } } return -1; } //检查符号是否是一对 例如 '{' 和 '}' bool is_pair(const char a, const char b, const string& symsa, const string& symsb) { return find_char(a, symsa) == find_char(b, symsb) && find_char(a, symsa) >= 0 ? true : false; } //检查合法性函数 bool isValidParentheses(string s) { // write your code here stack<char> sstack; for(auto i : s) { if(in_sym(i, PAIRA)) { sstack.push(i); } else if(in_sym(i, PAIRB)) { if(!sstack.empty() && is_pair(i, sstack.top(), PAIRB, PAIRA)) { sstack.pop(); } else { return false; } } } return sstack.empty(); }};
阅读全文
0 0
- lintcode 有效的括号序列
- lintcode ----有效的括号序列
- LintCode:有效的括号序列
- 有效的括号序列,lintcode
- lintcode--有效的括号序列
- Lintcode 有效的括号序列
- lintcode有效的括号序列
- 有效的括号序列-LintCode
- 【Lintcode】有效的括号序列
- 有效的括号序列(LintCode)
- 【堆栈】[Lintcode]有效的括号序列
- [Lintcode] #423 有效的括号序列
- lintcode之有效的括号序列(valid parenthese)
- lintcode刷体--有效的括号
- 有效的括号序列
- 有效的括号序列
- 有效的括号序列
- 有效的括号序列
- 动态规划 8.21 体会
- caffe训练自己的数据时的错误
- centos 安装 lnmp 环境
- prokject.js
- Stars--树状数组
- Lintcode 有效的括号序列
- Laravel框架执行流程
- SelectLayout-一个选择放大的Layout
- 输入框自动完成,补全提示代码
- ch2 线性表
- 关于maven package时 检索jdk自带的rt等sun下的class失败解决方案
- 嵌入式应届生毕业六个月后月薪1w4,是什么水平?
- Linux网络编程“惊群”问题总结
- python 之socket编程(TCP)