leetcode 20. Valid Parentheses
来源:互联网 发布:mysql修改参数为自增 编辑:程序博客网 时间:2024/06/16 06:33
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.
这道题就是判断括号的配对的正确与否,使用stack即可解决。主要思路如下:遍历字符串即可,
1)遇到左括号,直接入栈;
2)遇到右括号,判断右括号与栈顶元素是否配对;
a) 假如不配对,表示整体不配对;
b) 假如配对,出栈。
3)遍历结束的时候,假如栈不空,表示不配对,否者配对成功。
建议和leetcode 32. Longest Valid Parentheses 最长有效括号长度和 leetcode 678. Valid Parenthesis String 有效括号的判断 一起学习
代码如下:
import java.util.ArrayList;import java.util.List;public class Solution { public boolean isValid(String s) { boolean res=true; if(s==null || s.length()<=0) return res; if(s.length()%2==1) return false; List<Character> stack=new ArrayList<Character>(); for(int i=0;i<s.length();i++) { char n=s.charAt(i); if(n=='(' || n=='[' || n=='{') stack.add(n); else if(n==')' || n==']' || n=='}') { if(stack.isEmpty()) { //第一个字符就是闭合字符,比如] } ) res=false; break; } if(stack.get(stack.size()-1)==getDui(n)) stack.remove(stack.size()-1); else { //匹配错误 res=false; break; } } else { //出现了不该出现的字符 res=false; break; } } //stack不为空必然就是不匹配,比如 (( if(res==true && stack.size()>0) res=false; return res; } private Character getDui(char n) { char res=' '; switch (n) { case ')': res='('; break; case ']': res='['; break; case '}': res='{'; break; default: break; } return res; }}
C++的代码如下:
#include <iostream>#include <stack>using namespace std;class Solution {public: bool isValid(string s) { if (s.length() <= 0) return true; stack<char> my; for (int i = 0; i < s.length(); i++) { char a = s[i]; if (a == '(' || a == '{' || a == '[') my.push(a); else if (a == ')' || a == '}' || a == ']') { if (my.empty()) return false; else { char b = getDuiYing(a); cout << a << " " << b << endl; if (my.top() == b) my.pop(); else return false; } } } return my.empty(); } char getDuiYing(char a) { switch (a) { case ')': return '('; case ']': return '['; case '}': return '{'; default: return a; } }};
阅读全文
0 0
- LeetCode 20. Valid Parentheses
- [LeetCode] 20.Valid Parentheses
- LeetCode --- 20. Valid Parentheses
- LeetCode 20.Valid Parentheses
- [Leetcode] 20. Valid Parentheses
- 【leetcode】20. Valid Parentheses
- [leetcode] 20.Valid Parentheses
- [leetcode] 20. Valid Parentheses
- Leetcode 20. Valid Parentheses
- 20. Valid Parentheses LeetCode
- leetcode 20. Valid Parentheses
- 【LeetCode】20. Valid Parentheses
- leetcode 20. Valid Parentheses
- leetcode 20. Valid Parentheses
- LeetCode-20.Valid Parentheses
- LeetCode *** 20. Valid Parentheses
- LeetCode 20. Valid Parentheses
- leetcode-20. Valid Parentheses
- 用boost::lexical_cast用法解析
- python操作表格、txt文件、字典进行参数化(数据驱动)
- 公众号SEO:如何做好公众号和文章的搜索优化?
- vmware workstation 12 pro 安装Mac OS 10.12.4系统
- 查找单链表中的某几个相同的数,并把它们组成新的链表,原链表不变
- leetcode 20. Valid Parentheses
- Java线程池
- 9.static关键字
- 设计模式(11)--Flyweight(享元模式)--结构型
- UNIX环境编程学习笔记(2)——文件I/O之不带缓冲的 I/O
- 自定义函数
- html字符转义
- 写一个Java应用程序,从键盘输入一个整数,然后输出它的平方值立方值
- jenkins 构建打包android app