美文网首页
每周一个小算法-有效的括号

每周一个小算法-有效的括号

作者: 小左伯爵 | 来源:发表于2020-12-03 22:54 被阅读0次
    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
    有效字符串需满足:
    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。
    注意空字符串可被认为是有效字符串。
    示例 1:
    输入: "()"
    输出: true
    
    示例 2:
    输入: "()[]{}"
    输出: true
    
    示例 3:
    输入: "(]"
    输出: false
    
    示例 4:
    输入: "([)]"
    输出: false
    
    示例 5:
    输入: "{[]}"
    输出: true
    
    package cn.itbin.demo03;
    
    import java.util.Stack;
    
    /**
     * @author chenxiaogao
     * @className Kuohao
     * @description TODO
     * @date 2020/12/3
     **/
    public class IsValid {
        public static void main(String[] args) {
            String s = "(){}}{";
            boolean valid = isValid1(s);
            System.out.println("valid = " + valid);
    
        }
    
        public static boolean isValid(String s) {
            if (s.length() == 0) {
                return true;
            }
            Stack<Character> stack = new Stack<Character>();
            for (char c : s.toCharArray()) {
                if (c == '(' || c == '[' || c == '{') {
                    stack.push(c);
                } else {
    //如果栈中没有左括号,直接返回false
                    if (stack.empty()) {
                        return false;
                    } else {
                        Character pop = stack.pop();
    //如果当前为),并且栈中不为(,返回false
                        if (c == ')') {
                            if (pop != '(') {
                                return false;
                            }
                        } else if (c == ']') {
                            if (pop != '[') {
                                return false;
                            }
                        } else if (c == '}') {
                            if (pop != '{') {
                                return false;
                            }
                        }
                    }
                }
            }
            return stack.isEmpty();
        }
    
        public static boolean isValid1(String s) {
            int i = s.length() / 2;
            for (int i1 = 0; i1 < i; i1++) {
                s = s.replace("()", "").replace("[]", "").replace("{}", "");
            }
            return s.length() == 0;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:每周一个小算法-有效的括号

          本文链接:https://www.haomeiwen.com/subject/tjsqwktx.html