1.在第一次遇见这个题目时我选择的是暴力解决,直接把要判断的字符全部存在数组中,然后for语句从数组中再读取字符然后一个一个判断。这样就会出现一些问题比如数组的大小不够用。
下面是暴力解题的代码:
首先因为输入中有空格我选择用循环加getchar输入。
总的大的for循环是检索遍数,一次就是一遍
然后第二个for循环中开始查找第一个‘(’;
如果没有找到那说明这个括号一定不匹配就不会进入第三个循环中,
count的值为一,直接打印:不匹配
如果找到了第一个‘(’那么这个字符就被我换为字符a,(这样后面第二次查找就不会找到第一个这个‘(’了)
而后进入第三个循环中如果找到了一个匹配的括号),那么我们就要判断一下这个),是不是在(,的前面如果是的话那一定不匹配,因为前面已经找到第一个(,所以如果匹配他的前面一定没有),
//这里有一个问题if语句并没有执行过如果输入的是((())))( 但是在vs2022的调试中并没有进入这个if语句,望大佬帮忙解析一下
如果找到了并且匹配执行else语句;
最后的在第一个循环内的if(arr[j]==))是在前面对//那个问题的补充(因为他好像没有执行过后面的语句)所以作为补充因为前面找到的(和)都被变为字符a了
如果在第一个循环中还能找到)说明这个括号肯定是不匹配的如输入((),就是不匹配的。
//此次学习分享望各位指错纠正
//若是有更优解,望解惑。
谢谢观看。