欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

20. 有效的括号 --19/11/8

程序员文章站 2022-03-29 23:41:42
...

题目:
20. 有效的括号 --19/11/8
20. 有效的括号 --19/11/8

思路一:

  • 栈空
    1. } )]直接淘汰
    2. ( [ {入栈
  • 栈非空
    1. 若] } )匹配则peek出栈,不匹配return
    2. 若[ { ( 入栈
  • 循环结束
    1. 栈空 true
    2. 非空 false
class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        char[] arr = s.toCharArray();
        for(int i = 0;i<arr.length;i++){
            if(arr[i]==(']') || arr[i]==(')') || arr[i]==('}')
                    ||arr[i]==('(')||arr[i]==('[')||arr[i]==('{')){
                if(stack.empty()==true){
                    if(arr[i]==(']') || arr[i]==(')') || arr[i]==('}')){
                        return false;
                    }else{
                        stack.push(arr[i]);
                    }
                }else{
                    if(arr[i]==('(')||arr[i]==('[')||arr[i]==('{')){
                        stack.push(arr[i]);
                    }else{
                        try{
                            if(stack.peek()==('(') && arr[i]==(')')){
                                stack.pop();
                            }
                            else if(stack.peek()==('[') && arr[i]==(']')){
                                stack.pop();
                            }
                            else if(stack.peek()==('{') && arr[i]==('}')){
                                stack.pop();
                            }else{
                                return false;
                            }
                        }catch(Exception e){
                            e.printStackTrace();
                        }
                    }
                }
            }
        }
        if(stack.empty()==true){
            return true;
        }else{
            return false;
        }
    }
}

20. 有效的括号 --19/11/8
如果这段代码去面试,,,必挂
写的太丑了

思路二

我们可以不用栈,利用字符串匹配
即只要有括号相邻,就把它消去

s=s.replace("()","").replace("{}","").replace("[]","");

让字符串s一直循环执行这个操作,直到字符串的长度等于零(字符串只包含括号)
但是这种方法的时间复杂度为O(n2/2)

相关标签: