20.判断括号的使用是否合法
来源:互联网 发布:域名批量查询软件 编辑:程序博客网 时间:2024/05/21 10:48
Valid Parentheses
问题描述:
Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.
The brackets must close in the correct order, “()” and “()[]{}” are all valid but “(]” and “([)]” are not.
知识补充:
1.看到此题立刻想到的就是栈,可以很好的解决类似问题。
2.如果判断语句很多,可以使用switch语句。
栈的使用
#include <stack> stack<int> s1;stack<string> s2;//初始化empty() //堆栈为空则返回真pop() //移除栈顶元素,注意并不返回此元素push() //在栈顶增加元素size() //返回栈中元素数目top() //返回栈顶元素
测试代码(c++):
bool isValid(string s) { string s1 = ""; for(int i=0;i<s.length();i++) { if(s[i]=='('||s[i]=='{'||s[i]=='[') { s1 = s1+s[i]; } if(s[i]==')'||s[i]=='}'||s[i]==']') { if(s1.back()=='('&&s[i]==')') { s1.pop_back(); continue; } if(s1.back()=='['&&s[i]==']') { s1.pop_back(); continue; } if(s1.back()=='{'&&s[i]=='}') { s1.pop_back(); continue; } return false; } } if(s1.empty()) return true; else return false;
性能:
参考答案:
class Solution {public: bool isValid(string s) { stack <char> paren; for(char &c :s) { switch(c){ case '(': case '[': case '{': paren.push(c); break; case ')': if(paren.empty()||paren.top()!='(') return false; else paren.pop(); break; case ']': if(paren.empty()||paren.top()!='[') return false; else paren.pop();break; break; case '}': if(paren.empty()||paren.top()!='{') return false; else paren.pop(); break; default: ; } } return paren.empty(); }};
性能:
阅读全文
0 0
- 20.判断括号的使用是否合法
- 判断括号序列是否合法
- 判断if语句括号是否合法
- Valid Parentheses 判断括号是否合法
- strptime的使用,判断日期是否合法
- 华为机试-判断if语句括号是否合法
- 判断日期是否合法的方法
- 判断输入的年月日是否合法
- 判断年月日的输入是否合法
- 判断邮箱是否合法的代码
- 判断邮箱是否合法的代码
- 判断邮箱是否合法的代码
- 华为2014机考题目_判断if括号匹配是否合法_堆栈_简单的方法- -
- 使用正则表达式判断手机号码是否合法
- [算法]括号字符串是否合法
- 判断输入的日期是否合法的javascript
- 如何判断日期变量的输入是否合法
- 各种判断输入数据是否合法的js
- Cookies与Session的总结
- 靡不有初,鲜克有终,用博客记录自己进步的点点滴滴
- 一个爬虫工程师的梦
- Xcode8 注释插件 注释快捷键 VVDocumenter-Xcode?
- Module 的语法
- 20.判断括号的使用是否合法
- 菜鸟,大牛和教主,三者的区别
- hdu1114 完全背包
- linux常用命令
- 平衡二叉树-LintCode
- MIUI拖动效果
- C++之友元学习笔记
- Win7报错“部分便笺的元数据已被损坏” 80%解决问题
- 消息队列的使用场景