首页 > 其他 > 详细

leetcode每日一题(2021.5.8)——有效的括号

时间:2021-05-08 16:34:58      阅读:22      评论:0      收藏:0      [点我收藏+]

题目:有效的括号(简单)

一、问题描述

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

有效字符串需满足:

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

例如:

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

 

二、思路

这道题与在数据结构栈的应用中的括号匹配问题类似。所有首先回忆一下数据结构中利用栈实现括号匹配问题思路。

  1、顺序的遍历数组,如果遍历到左括号“ ( { [ ”就把他压入栈中,

  2、如果遍历到右括号“ ) } ] ”就将栈顶元素弹出栈与此次遍历进行匹配,如果匹配则继续执行,不匹配则结束程序返回错误。

  3、遍历完成后,如果栈空则全部匹配,模式正确;如果栈不空,则模式错误,返回错误。

 

进过括号匹配问题的回忆,我感觉这道题就是括号匹配问题,所有决定用括号匹配问题来试试能否解决本题。

判断括号左右的代码

技术分享图片

 

   判断括号是否匹配的代码

  技术分享图片

 

   主函数

  技术分享图片

 

 执行结果

技术分享图片

 

 显然我的方法不是最优解,但是基本符合括号匹配的原则,我用了太多的空间,和一些不必要的过程,主要为了自己读代码时方便立即。这些代码是可优化的代码,很多步骤都可以简化。

 

三、官方解答

技术分享图片

 

   虽然大体思路一致,但是很多小细节我没有注意。

 

 

 

 

 

 

leetcode每日一题(2021.5.8)——有效的括号

原文:https://www.cnblogs.com/zyq79434/p/14744421.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!