*Valid Parentheses

mac2022-06-30  78

题目:

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

转载于:https://www.cnblogs.com/hygeia/p/4812037.html

最新回复(0)