LeetCode150道面试经典题-- 有效的括号(简单)

1.题目

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

有效字符串需满足:

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

2.示例

示例 1:

输入:s = "()"

输出:true

示例 2:

输入:s = "()[]{}"

输出:true

示例 3:

输入:s = "(]"

输出:false

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

3.思路

首先需要找规律,第一如果该字符串个数为奇数那么绝对是无效的。并且需要用栈进行判断当遇到右括号时候,则与栈顶中元素进行对比,如果是匹配的左括号则出栈。如果出现不匹配则

4.代码

java 复制代码
class Solution {
    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        //        如果个数是奇数则绝对有问题
        if (s.length()%2==1){
            return false;
        }
        Map<Character,Character> map = new HashMap<>();
        map.put('}','{');
        map.put(')','(');
        map.put(']','[');

//       右括号无法存放进入stack中
        for (int i=0;i<s.length();i++){
           if (s.charAt(i)=='('||s.charAt(i)=='['||s.charAt(i)=='{'){
               stack.push(s.charAt(i));
           }else {
//               解决第一个右括号问题
               if(stack.isEmpty()){
                   return false;
               }
               if (stack.peek() == map.get(s.charAt(i))){
                   stack.pop();
               }else {
                   return false;
               }
           }
        }
        if (!stack.isEmpty()){
           return false;
        }
        return true;
    }
}

时间复杂度O(n),空间复杂度O(1)


会了?试试挑战下一题!♪(^∀^●)ノシ (●´∀`)♪

LeetCode150道面试经典题-- 环形链表(简单)_Alphamilk的博客-CSDN博客

相关推荐
Bellafu6661 小时前
spring项目部署后为什么会生成 logback-spring.xml文件
java
递归不收敛1 小时前
一、Java 基础入门:从 0 到 1 认识 Java(详细笔记)
java·开发语言·笔记
沐浴露z1 小时前
【Java SpringAI智能体开发学习 | 2】SpringAI 实用特性:自定义Advisor,结构化输出,对话记忆持久化,prompt模板,多模态
java·spring·springai
小沈同学呀2 小时前
创建一个Spring Boot Starter风格的Basic认证SDK
java·spring boot·后端
纪元A梦2 小时前
贪心算法应用:配送路径优化问题详解
算法·贪心算法
码农小伙2 小时前
通俗易懂地讲解JAVA的BIO、NIO、AIO
java·nio
C_player_0013 小时前
——贪心算法——
c++·算法·贪心算法
不要再敲了3 小时前
JDBC从入门到面试:全面掌握Java数据库连接技术
java·数据库·面试
潇I洒4 小时前
若依4.8.1打包war后在Tomcat无法运行,404报错的一个解决方法
java·tomcat·ruoyi·若依·404
kyle~4 小时前
排序---插入排序(Insertion Sort)
c语言·数据结构·c++·算法·排序算法