博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6.有效的括号
阅读量:3977 次
发布时间:2019-05-24

本文共 804 字,大约阅读时间需要 2 分钟。

文章目录

一、题目描述

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

左括号必须用相同类型的右括号闭合。

左括号必须以正确的顺序闭合

在这里插入图片描述

在这里插入图片描述

二、解题思路

可以利用栈(先进后出),总共就三种类型的括号,我们将每一种括号的左半边存入到栈中,然后我们分别将字符串中剩下的每种括号的右半边与栈顶元素进行比较,如果能匹配上就将栈顶元素弹出,此时再进行当前栈顶元素的判断。

三、代码编写步骤

第一步:先声明一个字符串类型的栈,然后遍历栈中的每一个字符,将字符中的每种括号的左半边存储到栈中。

第二步:然后进行判断,列举出每一种匹配的条件,当满足某一种条件之后将其出栈。

四、代码演示

class Solution {
public boolean isValid(String s) {
//定义一个用来装字符类型的栈 Stack
stack = new Stack<>(); for(int i=0; i

第4行:定义一个用来装字符类型的栈。

第6行:遍历字符串s,获取第i个位置的字符

第8行:进行判断,如果拿到的第i个位置的字符是左边括号类型就压栈

第9行:进栈操作,就是将左边的字符压如栈中。

第15行:栈的非空判断,就是说如果栈里面有元素,那么进入下面的操作

第17行:stack.peek() 取出栈顶值,不出栈,将栈顶值赋给top

第19到24行:在下一次循环取出的某个字符能与栈顶匹配的话,就stack.pop(),该方法用于从堆栈中弹出元素,该元素从堆栈顶部弹出,并从堆栈顶部移除。

第34行:如果栈空了那就说明都匹配上了,如果栈里还有元素,继续上面你的方法。

总结

新手小白自己的一些见解,可能还有更好的方法或者效率更高的方法,不足之处还望指正。

转载地址:http://aogki.baihongyu.com/

你可能感兴趣的文章
Typora使用MarkDown语法
查看>>
火狐浏览器安装插件提示:“此附加组件无法安装,因为他有可能已损坏”
查看>>
linux 根文件系统,根设备,sys_open, sys_read, sys_write, sys_mount, sys_mknod
查看>>
uboot的配置(make xxx_config)和编译(make)工程解读
查看>>
uboot启动流程之上电启动到第一次准备好C语言运行环境
查看>>
uboot启动之第一次运行C函数到uboot重定位
查看>>
uboot重定位后初始化
查看>>
uboot引导os
查看>>
linux make xxxconfig执行过程
查看>>
linux kernel之platform driver&device
查看>>
linux 内核网卡驱动 ast2500 board
查看>>
linux中断处理与NAPI机制
查看>>
linux kernel编译makefile简要介绍(arm)
查看>>
pci总线扫描及pci网卡驱动
查看>>
x86下usb驱动framework
查看>>
linux kernel同步之原子操作
查看>>
内存barrier
查看>>
hamming weight algorithm(汉明算法)以及kernel的实现
查看>>
linux X86下的段地址_段内偏移_虚拟地址_线性地址_物理地址
查看>>
linux ARM多处理器的启动过程
查看>>