[LeetCode]Valid Parentheses

1、题意                     

给定一个字符串,只包含字符'(', ')', '{', '}', '[' 和 ']',确定输入字符串是否有效。
括号必须以正确的顺序关闭,“()”和“( )[ ]{ }”都是有效的,但“( ]“和“([ )]”不是。

2、解题思路                                

将给定的字符串使用对应方法转换为一个字符数组,进行逐个遍历判断是否为左括号,如果是则使用push方法进行入栈,

如果不是进行值栈是否为空的判断,如果不为空,说明值栈中存在某一种左括号,则使用pop方法进行出栈,进行对比。

如果不能理解我表达的意思,可以自己参看代码进行理解。 

3、注意                                   

比较字符是用==,比较String是用equal(),因为String是引用类型,值相等但是地址可能不等。代码如下:

 

 1 public static boolean isParen(String s ){
 2         if (s.length() == 0 || s.length() % 2 == 1){
 3             return false;
 4         }
 5         Stack<Character> stack = new Stack();
 6         for(int i = 0;i < s.length(); i++){
 7             if(s.charAt(i) == '{' || s.charAt(i) == '[' || s.charAt(i) == '('){
 8                 stack.push(s.charAt(i));
 9             }else{
10                 if(stack.size()==0){
11                     return false;
12                 }
13                 Character top = stack.pop();
14                 if(s.charAt(i) == '}'){
15                     if(top == '{'){
16                         return true;
17                     }else{
18                         return false;
19                     }
20                 }else if(s.charAt(i) == ']'){
21                     if(top == '['){
22                         return true;
23                     }else{
24                         return false;
25                     }
26                 }
27                 else if(s.charAt(i) == '('){
28                     if(top == ')'){
29                         return true;
30                     }else{
31                         return false;
32                     }
33                 }
34             }
35         }
36         return stack.size() == 0;
37     }

 

4 、总结:                                

  在写代码的时候忽略了其中栈是否为空的判断,出现异常java.util.EmptyStackException,在代码红色标记处进行添加得以解决,每一道leetcode题的思路都需要自己动手去写,去琢磨,那些有时候看似比较简单的问题,在你动手去编码的时候总会有一些细节被遗漏。思维的严谨性对于一个优秀的程序员来说非常重要。通过一道一道的算法题对自己编码技术,思维能力的不断提升。修得内功,内外结合,方能成为武林高手。每一道算法题都是对自己内功的一个提升。

 

posted on 2017-09-28 08:13  PeaceGuy  阅读(206)  评论(0编辑  收藏  举报

导航