leetcode: Valid Parentheses
2015-08-11 19:41
232 查看
题目描述:
Given a string containing just the characters
determine if the input string is valid.
The brackets must close in the correct order,
all valid but
not.
题目思路:
这个题目是典型的使用压栈的方式解决的问题,题目中还有一种vali情况没有说明,需要我们自己考虑,就是层层嵌套的情况但是可以完全匹配,也是情况的一种。解题思路:对字符串s中的每一个字符c,如果c不是右括号,就压入栈stack中。如果c是右括号,判断stack是不是空的,空则说明没有左括号,直接返回not valid,非空就取出栈顶的字符pre来对比,如果匹配的,就弹出栈顶的字符,继续取出s中的下一个字符;如果不匹配,说明不是valid的,直接返回。当我们遍历了一次字符串s之后,之一还有一种情况:stack中还有残留字符没有匹配,此时stack不是空的这时说明s不是valid的,因为只要valid,一定全都可以得到匹配使得左括号弹出。
代码实现:
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.
题目思路:
这个题目是典型的使用压栈的方式解决的问题,题目中还有一种vali情况没有说明,需要我们自己考虑,就是层层嵌套的情况但是可以完全匹配,也是情况的一种。解题思路:对字符串s中的每一个字符c,如果c不是右括号,就压入栈stack中。如果c是右括号,判断stack是不是空的,空则说明没有左括号,直接返回not valid,非空就取出栈顶的字符pre来对比,如果匹配的,就弹出栈顶的字符,继续取出s中的下一个字符;如果不匹配,说明不是valid的,直接返回。当我们遍历了一次字符串s之后,之一还有一种情况:stack中还有残留字符没有匹配,此时stack不是空的这时说明s不是valid的,因为只要valid,一定全都可以得到匹配使得左括号弹出。
代码实现:
//LeetCode_Valid Parentheses //Written by Zhou //2013.12.28 class Solution { public: bool isValid(string s) { stack<char> charStack; size_t i = 0; while(i != s.length()) { char c = s[i]; if (c != ')' && c != '}' && c != ']') { charStack.push(c); } else { if (charStack.size() == 0) return false; char pre = charStack.top(); switch(c) { case ')': if (pre == '(') charStack.pop(); else return false; break; case '}': if (pre == '{') charStack.pop(); else return false; break; case ']': if (pre == '[') charStack.pop(); else return false; break; } } ++i; } if (charStack.size() == 0) return true; else return false; } };
相关文章推荐
- python 详解re模块
- Group By的简单用法
- Service
- light oj 1021 状态压缩dp
- ZOJ2836 Number Puzzle【容斥原理】
- 08-11 数据库、方法封装 Serverlet、doGet方法
- 蓝桥杯-算法训练-最短路
- gcc和g++的区别
- poj 1032 Parliament (整数拆分)
- hdu 3572 Task Schedule(最大流&&建图经典&&dinic)
- [POJ 1679] The Unique MST 最小树
- iOS开发-Day13-OC基础、面向对象
- 从错误中学python(2)————字符串转浮点数
- PAT 1038. Recover the Smallest Number (30)
- 使用java的迭代器对list进行遍历
- windows wim
- eclipse store password unencrypted
- Serverlet搭建
- JavaScript学习笔记5
- MYSQL隔离级别介绍