c++用栈实现括号匹配_c语言题库及详解答案

c++用栈实现括号匹配_c语言题库及详解答案图解LeetCode——921. 使括号有效的最少添加(难度:中等)一、题目只有满足下面几点之一,括号字符串才是有效的:它是一个空字符串,或者它可以被写成 ( 与 连接), 其中 和 都是有效字符串,或者它可以被写作 ,其中 是有效字符串。给定一个括号字符串 ,移动N

图解LeetCode——921. 使括号有效的最少添加(难度:中等)   一、题目   只有满足下面几点之一,括号字符串才是有效的:它是一个空字符串,或者它可以被写成 ( 与 连接), 其中 和 都是有效字符串,或者它可以被写作 ,其中 是有效字符串。   给定一个括号字符串 ,移动N次,你就可以在字符串的任何位置插入一个括号。   例如,如果 ,你可以插入一个开始括号为 或结束括号为 。   返回 为使结果字符串 有效而必须添加的最少括号数。   二、示例   2.1> 示例 1:   【输入】s = “())”【输出】1   2.2> 示例 2:   【输入】s = “(((“【输出】3   提示:   <= s.length <= 只包含 和 字符。   三、解题思路   这道题的题目描述真的挺让人费解的。其实题目的意思就是,我们如果想要配对好所有的括号,需要在原有字符串的基础上,添加多少个括号(可能是左括号、也可能是右括号)。那么针对于这种配对类型类型的题目,第一个想法就是使用堆栈来实现。当然,对于的特殊性,即:左括号 + 右括号 。我们也可以根据这个规律去计算。如下是两种解题算法的详细解释。   3.1> 思路1:利用栈特性去计算   我们可以通过对字符串进行每个字符的遍历,放到堆栈中。当发现栈顶字符是,待入栈的字符是,则符合括号匹配的情况。那么,此时我们只需将栈顶字符出栈即可。而针对于其他情况,我们都是将遍历的字符入栈即可。那么字符串s遍历完毕之后,我们来调用方法计算存储的字符长度,返回的长度就是这道题的结果。具体逻辑如下图所示:
c++用栈实现括号匹配_c语言题库及详解答案
c++用栈实现括号匹配_c语言题库及详解答案   针对该思路的代码实现,请参见:代码实现 4.1> 利用栈特性去计算   3.2> 思路2:找规律去匹配   通过题目的【提示】 只包含 和 字符。所以, 对于两个字符的匹配一共有如下图的四种情况。那么,只有【情况一】是会匹配成功的,而其他的情况都匹配失败。那么我们创建两个变量:(左括号数量)和(右括号数量)。如果遍历到字符是左括号,则执行如果遍历到字符是右括号,并且leftCount不为0,则执行如果遍历到字符是右括号,并且leftCount等于0,则执行
c++用栈实现括号匹配_c语言题库及详解答案
c++用栈实现括号匹配_c语言题库及详解答案   针对该思路的代码实现,请参见:代码实现 4.2> 找规律去匹配   四、代码实现   4.1> 实现1:利用栈特性去计算   
c++用栈实现括号匹配_c语言题库及详解答案
c++用栈实现括号匹配_c语言题库及详解答案   4.2> 实现2:找规律去匹配   
c++用栈实现括号匹配_c语言题库及详解答案
c++用栈实现括号匹配_c语言题库及详解答案   今天的文章内容就这些了:写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享 。   更多技术干货,欢迎大家“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」   往期推荐

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/39968.html

(0)
上一篇 2024年 9月 7日 下午10:10
下一篇 2024年 9月 7日 下午10:14

相关推荐

关注微信