题目:有效的括号(简单)
一、问题描述
给定一个只包括 ‘(‘
,‘)‘
,‘{‘
,‘}‘
,‘[‘
,‘]‘
的字符串 s
,判断字符串是否有效。
有效字符串需满足:
例如:
输入:s = "()[]{}" 输出:true
输入:s = "([)]" 输出:false
输入:s = "{[]}" 输出:true
二、思路
这道题与在数据结构栈的应用中的括号匹配问题类似。所有首先回忆一下数据结构中利用栈实现括号匹配问题思路。
1、顺序的遍历数组,如果遍历到左括号“ ( { [ ”就把他压入栈中,
2、如果遍历到右括号“ ) } ] ”就将栈顶元素弹出栈与此次遍历进行匹配,如果匹配则继续执行,不匹配则结束程序返回错误。
3、遍历完成后,如果栈空则全部匹配,模式正确;如果栈不空,则模式错误,返回错误。
进过括号匹配问题的回忆,我感觉这道题就是括号匹配问题,所有决定用括号匹配问题来试试能否解决本题。
判断括号左右的代码
判断括号是否匹配的代码
主函数
执行结果
显然我的方法不是最优解,但是基本符合括号匹配的原则,我用了太多的空间,和一些不必要的过程,主要为了自己读代码时方便立即。这些代码是可优化的代码,很多步骤都可以简化。
三、官方解答
虽然大体思路一致,但是很多小细节我没有注意。
原文:https://www.cnblogs.com/zyq79434/p/14744421.html