『牛客|每日一题』有效括号序列

简介: 基础算法无论在研究生面试还是求职面试都是十分重要的一环,这里推荐一款算法面试神器:牛客网-面试神器;算法题只有多刷勤刷才能保持思路与手感,大家赶紧行动起来吧(温馨提示:常见的面试问答题库也很nice哦 https://www.nowcoder.com/link/pc_csdncpt_ll_sf


🍁每日推荐:

如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦

『牛客|每日一题』有效括号序列

1.每日一题

网络异常,图片无法展示
|

2.方法1:左括号入栈

2.1思路分析

遍历字符串,遇到'(','{','['这三种字符的时候,将字符入栈stk;而遇到')','}',']'这三种字符的时候则让对应的匹配字符出栈。具体规则如下:

  • step 1:引入辅助栈stk,遍历字符串,每次遇到'(','{','['字符的时候将字符入栈stk
  • step 2:当遇到')','}',']'字符的时候,则检查栈是否空,且顶元素是否为匹配元素(如{和}匹配等),如果栈空或者栈顶元素不为匹配元素则括号序列不合法
  • step 3:当栈非空,且栈顶元素为匹配元素,则栈顶元素出栈。
  • step 4:循环匹配字符串,直到每次字符处理完
  • step 5:检查栈stk是否为空,栈为空则序列合法,否则不合法(当括号以正确顺序关闭时则最后的栈为空)

2.2核心代码

importjava.util.*;

publicclassSolution {

   /**

    * @param s string字符串

    * @return bool布尔型

    */

   publicbooleanisValid (Strings) {

       // write code here

       Stack<Character>stk=newStack<Character>();

       intl=s.length();

       for(inti=0;i<l;++i){

           chara=s.charAt(i);

           if(a=='('||a=='['||a=='{')stk.push(a);

           if(a==')'){

               if(stk.isEmpty()||stk.peek()!='(') returnfalse;

               stk.pop();

               continue;

           }

           if(a==']'){

               if(stk.isEmpty()||stk.peek()!='[')returnfalse;

               stk.pop();

               continue;

           }

           if(a=='}'){

               if(stk.isEmpty()||stk.peek()!='{')returnfalse;

               stk.pop();

               continue;

           }

       }

       returnstk.isEmpty()?true:false;

   }

}

网络异常,图片无法展示
|

3.方法2:右括号入栈

3.1思路分析

 仍然是遍历字符串,借助辅助栈

  • step 1:当遇到'(','[','{'这三种字符的时候则让对应的匹配字符入栈(分别对应')',']','}')
  • step 2:当出现的字符不是'(','[','{'这三种字符时,则先判断栈是否为空或者当前字符是否与栈顶元素一样,
  • step 3:当栈空或者当前字符与栈顶字符不一样时,则括号序列不合法,直接返回;
  • step 4:否则栈顶元素出栈。遍历字符串直到所有元素遍历完成。最后判断栈是否为空,不为空则括号序列不合法;否则为合法序列。

3.2核心代码

importjava.util.Stack;

 

publicclassSolution {

   publicbooleanisValid(Strings) {

        Stack<Character>stack=newStack<Character>();

        //使用foreach循环

        for (charc : s.toCharArray()) {

            if (c=='(')

                stack.push(')');

            elseif (c=='{')

                stack.push('}');

            elseif (c=='[')

                stack.push(']');

            elseif (stack.isEmpty() ||stack.pop() !=c)

                returnfalse;

        }

        returnstack.isEmpty();

    }

}

网络异常,图片无法展示
|

📚订阅专栏:『牛客刷题集锦』

🍁每日推荐:基础算法无论在研究生面试还是求职面试都是十分重要的一环,这里推荐一款算法面试神器:牛客网-面试神器;算法题只有多刷勤刷才能保持思路与手感,大家赶紧行动起来吧(温馨提示:常见的面试问答题库也很nice哦)

如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦

相关文章
|
Oracle Ubuntu Java
Ubuntu安装JDK
一. Ubuntu 安装JDK的两种方式 1. 通过apt安装. 2. 通过官网下载安装包安装. 这里推荐第1种,因为可以通过 apt-get upgrade 方式方便获得jdk的升级 二. 通过apt安装(jdk有很多版本, 这里介绍两种: openjdk和oracle的JDK) 1.
72072 4
|
API Android开发
[Android]图片加载库Glide
[Android]图片加载库Glide
289 0
|
存储 编解码 Android开发
如何使用 VMware 安装安卓虚拟机,如何配置虚拟机的网络和存储?
如何使用 VMware 安装安卓虚拟机,如何配置虚拟机的网络和存储?
1689 0
|
数据安全/隐私保护
WindowManager.LayoutParams Flag 含义
WindowManager.LayoutParams Flag 含义
421 0
|
存储 数据库 Android开发
我要做 Android 之 ContentProvider
相信大家对于 Android 顶顶大名的四大组件也不陌生了。今天我们来谈一谈 ContentProvider 的用法。什么东西都是基本最重要啊,可以人是一个健忘的动物,所以需要做下来笔记,常看常新。
1393 0
|
6天前
|
云安全 人工智能 自然语言处理
|
10天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
933 33
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
564 4
|
7天前
|
机器学习/深度学习 人工智能 数据可视化
1秒生图!6B参数如何“以小博大”生成超真实图像?
Z-Image是6B参数开源图像生成模型,仅需16GB显存即可生成媲美百亿级模型的超真实图像,支持中英双语文本渲染与智能编辑,登顶Hugging Face趋势榜,首日下载破50万。
480 23