有效括号序列(java实现

简介: 有效括号序列(java实现

给出一个仅包含字符’(‘,’)‘,’{‘,’}‘,’[‘和’]',的字符串,判断给出的字符串是否是合法的括号序列

括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。

数据范围:字符串长度0≤n≤10000

要求:空间复杂度 O(n),时间复杂度 O(n)

  public boolean isValid (String s) {
        //声明栈
        Stack<Character> sin = new Stack<Character>();
        for (int i = 0; i < s.length(); i++) {
            //获取字符串的第i个字符
            char c = s.charAt(i);
            //判断c是否属于左括号,如果是则加入栈中
            if (c == '[' || c == '(' || c == '{') {
                sin.push(c);
                //判断是不是匹配的中括号,如果是则将栈顶元素去除
            } else if (c == ']' && !sin.isEmpty() && sin.peek() == '[' ) {
                sin.pop();
                //判断是不是匹配的小括号,如果是则将栈顶元素去除
            } else if (c == ')' && !sin.isEmpty()&& sin.peek() == '(' ) {
                sin.pop();
                //判断是不是匹配的大括号,如果是则将栈顶元素去除
            } else if (c == '}' && !sin.isEmpty()&& sin.peek() == '{' ) {
                sin.pop();
                //都不符合就判断是无序的
            }else return false;
        }
        //符合上面条件之后还要看栈中是否还有元素,如果有则不是有序的
        return sin.isEmpty();
    }

本次实现,主要是利用栈的先进后出来匹配符号序列。小白求大佬多多指教

相关文章
|
7月前
|
存储 Java 数据处理
|
3月前
|
存储 Java 索引
使用java代码实现左右括号查找
使用java代码实现左右括号查找
|
5月前
|
Arthas 监控 算法
JVM成神路终章:深入死磕Java虚拟机序列总纲
JVM成神路终章:深入死磕Java虚拟机序列总纲
122 1
|
6月前
|
算法 Java C语言
【经典算法】LeetCode 20:有效的括号(Java/C/Python3实现含注释说明,Easy)
【经典算法】LeetCode 20:有效的括号(Java/C/Python3实现含注释说明,Easy)
49 1
|
7月前
|
C++ Rust NoSQL
Rust 数据类型 之 类C枚举 c-like enum
Rust 数据类型 之 类C枚举 c-like enum
64 0
Rust 数据类型 之 类C枚举 c-like enum
|
7月前
|
Java Go C++
Golang每日一练(leetDay0112) 2、3、4的幂
Golang每日一练(leetDay0112) 2、3、4的幂
56 0
Golang每日一练(leetDay0112) 2、3、4的幂
|
7月前
|
Java Go C++
Golang每日一练(leetDay0085) 2的幂、数字 1 的个数
Golang每日一练(leetDay0085) 2的幂、数字 1 的个数
53 0
Golang每日一练(leetDay0085) 2的幂、数字 1 的个数
|
7月前
|
算法 Python Java
Java每日一练(20230429) 二叉树后序遍历、删除无效括号、合并有序链表
Java每日一练(20230429) 二叉树后序遍历、删除无效括号、合并有序链表
50 0
Java每日一练(20230429) 二叉树后序遍历、删除无效括号、合并有序链表
|
7月前
|
Java Go C++
Java每日一练(20230420) 罗马数字转整数、电话号码的字母组合、排列序列
Java每日一练(20230420) 罗马数字转整数、电话号码的字母组合、排列序列
64 0
Java每日一练(20230420) 罗马数字转整数、电话号码的字母组合、排列序列
|
7月前
|
Python Java 算法
Java每日一练(20230402) 有效括号、二叉树前序遍历、全排列
Java每日一练(20230402) 有效括号、二叉树前序遍历、全排列
47 0
Java每日一练(20230402) 有效括号、二叉树前序遍历、全排列