C语言关于括号匹配问题

1.在第一次遇见这个题目时我选择的是暴力解决,直接把要判断的字符全部存在数组中,然后for语句从数组中再读取字符然后一个一个判断。这样就会出现一些问题比如数组的大小不够用。

下面是暴力解题的代码:

5a18ec0aa2a14e05bdfc5c37f9bd7515.png

 首先因为输入中有空格我选择用循环加getchar输入。

总的大的for循环是检索遍数,一次就是一遍

然后第二个for循环中开始查找第一个‘(’;

如果没有找到那说明这个括号一定不匹配就不会进入第三个循环中,

count的值为一,直接打印:不匹配

 

如果找到了第一个‘(’那么这个字符就被我换为字符a,(这样后面第二次查找就不会找到第一个这个‘(’了)

而后进入第三个循环中如果找到了一个匹配的括号),那么我们就要判断一下这个),是不是在(,的前面如果是的话那一定不匹配,因为前面已经找到第一个(,所以如果匹配他的前面一定没有),

//这里有一个问题if语句并没有执行过如果输入的是((())))(     但是在vs2022的调试中并没有进入这个if语句,望大佬帮忙解析一下

如果找到了并且匹配执行else语句;

最后的在第一个循环内的if(arr[j]==))是在前面对//那个问题的补充(因为他好像没有执行过后面的语句)所以作为补充因为前面找到的(和)都被变为字符a了

如果在第一个循环中还能找到)说明这个括号肯定是不匹配的如输入((),就是不匹配的。

 

 

//此次学习分享望各位指错纠正

//若是有更优解,望解惑。

谢谢观看。

 

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白_moon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值