[leetcode 20] Valid Parentheses
2015-11-19 13:06
399 查看
Question:
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.
分析:
类似编译系统的匹配问题,用栈来实现;
因为(', ')', '{', '}', '[' and ']',都是固定搭配的,遇到左半部分则进展,遇到与栈顶相匹配的右半部分则出栈。
字符串S为空是返回true;
如果字符串S的长度为奇数,则肯定有不匹配的,返回false;
比如:字符串s为“([{}])”,遇到第一个字符‘('时,进栈,判断下一个字符是否为’)‘,是则将’(‘出栈,否则将下一个字符进栈。以此类推判断,知道判断完最后一个元素后,如果栈为空,则说明字符串是有效的,否则无效。
代码如下:
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.
分析:
类似编译系统的匹配问题,用栈来实现;
因为(', ')', '{', '}', '[' and ']',都是固定搭配的,遇到左半部分则进展,遇到与栈顶相匹配的右半部分则出栈。
字符串S为空是返回true;
如果字符串S的长度为奇数,则肯定有不匹配的,返回false;
比如:字符串s为“([{}])”,遇到第一个字符‘('时,进栈,判断下一个字符是否为’)‘,是则将’(‘出栈,否则将下一个字符进栈。以此类推判断,知道判断完最后一个元素后,如果栈为空,则说明字符串是有效的,否则无效。
代码如下:
<span style="font-size:14px;">class Solution { public: bool isValid(string s) { stack<char> st; if(s.length() == 0) return true; if(s.length() % 2 == 1) return false; for(int i = 0; i < s.length(); ++i){ if(st.empty()){ st.push(s[i]); } else{ char c = st.top(); switch(c){ case '(': if(s[i] == ')') st.pop(); else st.push(s[i]); break; case '[': if(s[i] == ']') st.pop(); else st.push(s[i]); break; case '{': if(s[i] == '}') st.pop(); else st.push(s[i]); break; default: st.push(s[i]); break; } } } return st.empty(); } };</span>
相关文章推荐
- 用adb将手机/data/data/com.android.providers.contacts/databases下的contacts2.db拷贝到电脑上
- Asp.Net HttpApplication 事件汇总
- MYSQL函数 Cast和convert的用法详解
- Git详解之二:Git基础
- reflect 库使用小结
- Hibernate 映射文件属性介绍
- Windows 下安装 swoole 具体步骤
- 绑定MAC的静态IP配置路由器
- Python基础学习-MySQL与Python结合
- 2015-11-19 English
- LVS三种模式配置及优点缺点比较
- 【openCV】对图像进行锐化
- GB2312简体中文编码表
- ssh wireshark 远程抓包
- Operating System: Three Easy Pieces --- Locks (Note)
- Longest Substring Without Repeating Characters
- Servlet:项目中的各个地方的路径问题
- 十进制的经纬度转成度分秒的形式
- HTML5<aside>元素
- sicily 1231. The Embarrassed Cryptography