栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【力扣刷题第一天-1】 有效的括号

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【力扣刷题第一天-1】 有效的括号

文章目录

前言一、题目描述二、解题思路三、示例代码总结


前言

  本题主要利用「栈」这一数据结构来解决。

提示:以下是本篇文章正文内容,编程语言为Java

一、题目描述

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

示例 1:

输入:s = "()"
输出:true

链接:有效的括号

二、解题思路

  本题比较简单,可以很容易想到利用栈这一数据结构来解决。
  我们遍历给定的字符串 s。此时可以分为两种情况:
  1)当遇到左括号时直接把它放入栈顶。
  2)当遇到右括号时。我们就要弹出栈顶元素,看是否和当前括号匹配,若不匹配则该括号无效,直接返回 false。这里要特别注意栈为空的情况。
  遍历结束,若栈为空,则所有括号都有效,返回 true。否则,说明左括号多,返回 false

三、示例代码
class Solution {
    public boolean isValid(String s) {
        Deque st=new linkedList<>();
        for(char c:s.toCharArray()){
            if(c=='('||c=='['||c=='{'){
                st.push(c);
            }
            else if(st.isEmpty()||c==')'&&st.pop()!='('||c=='}'&&st.pop()!='{'||c==']'&&st.pop()!='['){
                return false;
            }

        }
        return st.isEmpty();

    }
}

时间复杂度:O(n),其中 n 是字符串 s 的长度。

总结

  Java可以用Deque st=new linkedList<>()来初始化栈,不推荐用Stack。
  其中,linkedList是一个双端队列,里面封装了栈的常用方法,如下表所示:

堆栈方法等效Deque方法
push(e)addFirst(e)
pop()removeFirst()
peek()peekFirst()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/768765.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号