【发布时间】:2020-01-06 16:39:44
【问题描述】:
我必须弄清楚括号顺序是正确的。这是我的问题。 Neat bracket
& 这是我的解决方案代码。
#include <stdio.h>
int main()
{
char s[100];
int c=0,count1=0,count2=0,count3=0;
scanf("%[^\n]",s);
while(s[c] !='\0')
{
if(s[c] == '(')
{
++count1;
}
if(s[c] == ')')
{
++count2;
}
if(s[c] == '"')
{
++count3;
}
++c;
}
if(count1==count2 && count3%2 ==0)
{
printf("Yes");
}
else
{
printf("No");
}
return 0;
}
但它为测试用例返回不正确的答案。 & 我也知道该算法不正确,因为它无法为这个测试用例给出正确的答案
)))""(((
那么我该如何改进我的算法???
【问题讨论】:
-
提示:您听说过数据结构“堆栈”吗?它有称为 push 和 pop 的操作。
-
不需要堆栈来解决这个问题。提示:对于计数相等的字符串
(()))(,每一步的count1和count2是什么?第一次在初始子字符串(()))上发生了一些事情,这暗示了一个问题...... -
部分建议:括号的单个计数器;当“
(”时增加它;递减它并且检查“)”不小于零;最后检查它是否为零。不知道如何与"混合。 -
我强烈建议你学习堆栈。如果你知道数组或向量,你会没事的。这个问题最好用它来解决(可能还有其他更好的方法,但这是我解决它的方法)
-
你为什么要匹配
"字符?
标签: c algorithm c++17 sequence