码迷,mamicode.com
首页 > 其他好文 > 详细

*Valid Parentheses

时间:2015-09-16 06:23:35      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:

题目

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.

 

题解:

这道题是一道很常见的老题,记得当时看严蔚敏的数据结构还有数据结构课上面都见过这道题,一道训练栈的基础题。

解题方法是:

一个个检查给的characters,如果是左括号都入栈;如果是右括号,检查栈如果为空,证明不能匹配,如果栈不空,弹出top,与当前扫描的括号检查是否匹配。

全部字符都检查完了以后,判断栈是否为空,空则正确都匹配,不空则证明有没匹配的。

注意:

检查字符是用==,检查String是用.isEqual(),因为String是引用类型,值相等但是地址可能不等。

 

代码如下:

 1 public boolean isValid(String s) {
 2         if(s.length()==0||s.length()==1)
 3             return false;
 4 
 5         Stack<Character> x = new Stack<Character>();
 6         for(int i=0;i<s.length();i++){
 7             if(s.charAt(i)==‘(‘||s.charAt(i)==‘{‘||s.charAt(i)==‘[‘){
 8                 x.push(s.charAt(i));
 9             }else{
10                 if(x.size()==0)
11                     return false;
12                 char top = x.pop();
13                 if(s.charAt(i)==‘)‘)
14                     if(top!=‘(‘)
15                         return false;
16                 else if(s.charAt(i)==‘}‘)
17                     if(top!=‘{‘)
18                         return false;
19                 else if(s.charAt(i)==‘]‘)
20                     if(top!=‘[‘)
21                         return false;
22             }
23     }
24         return x.size()==0;
25 }

reference: http://www.cnblogs.com/springfor/p/3869420.html

*Valid Parentheses

标签:

原文地址:http://www.cnblogs.com/hygeia/p/4812037.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!