leetcode29( 有效的括号)

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例 1:

**输入:**s = "()"

**输出:**true

思路:将待匹配的左侧符号入栈,遇到右侧符号时弹出匹配,如果匹配失败立刻返回false

如果遍历结束,依然有左侧符号未被弹出,返回false

长为0和1的单独处理

java 复制代码
class Solution {
    public boolean isValid(String s) {
            if(s == null || s.length() == 0) return true;
        if(s.length()==1) return false;
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c == '(' || c == '{' || c == '[') {
                stack.push(c);
            }
            else if (c == ')' ) {
                if (stack.isEmpty()) {
                    return false;
                }
                else {
                    char top = stack.pop();
                    if (top != '(') {
                        return false;
                    }
                }
            }
            else if (c == '}' ) {
                if (stack.isEmpty()) {
                    return false;
                }
                else {
                    char top = stack.pop();
                    if (top != '{') {
                        return false;
                    }
                }
            }
            else if (c == ']' ) {
                if (stack.isEmpty()) {
                    return false;
                }
                else {
                    char top = stack.pop();
                    if (top != '[') {
                        return false;
                    }
                }
            }
        }
            if(stack.isEmpty()) return true;
        return false;
    }
}
相关推荐
于樱花森上飞舞2 小时前
【java】常见排序算法详解
java·算法·排序算法
维持好习惯2 小时前
复杂Excel文件导入功能(使用AI快速实现)
java·spring boot·excel
酷炫码神2 小时前
第 2 篇:Java 入门实战(JDK8 版)—— 编写第一个 Java 程序,理解基础运行逻辑
java·开发语言·策略模式
月阳羊2 小时前
【硬件-笔试面试题-93】硬件/电子工程师,笔试面试题(知识点:波特图)
java·经验分享·单片机·嵌入式硬件·面试
GawynKing2 小时前
图论3 图的遍历
算法·深度优先
choice of3 小时前
SpringMVC通过注解实现全局异常处理
java·后端·spring
单线程bug3 小时前
Spring Boot中Filter与Interceptor的区别
java·spring boot·后端
小蒜学长3 小时前
基于uni-app的蛋糕订购小程序的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·小程序·uni-app
GitCode官方3 小时前
告别环境地狱!Java生态“AI原生”解决方案入驻 GitCode
java·开源·gitcode