【发布时间】:2019-08-22 02:50:46
【问题描述】:
我有一个带括号的字符串 (char *ch),我必须:
1) 验证字符串是否书写正确且平衡良好,例如:“(())” 书写正确且平衡良好,而“)()” 书写既不正确也不平衡
2) 如果字符串写得不好且不平衡,则返回第一个偏离此规则的括号的位置。
对于第一个问题,没关系。我的代码如下:
int WBalanced(char *ch)
{
stack p; int i;
for (i=0; i<strlen(ch);i++)
{
if(ch[i] == '(')
{
addStack(P, ch[i]);
else if(ch[i] == ')')
{
if(stackEmpty(P) == 0)
unstack(P);
else
return (0);
}
}
}
if(stackEmpty(P)==1)
return (0);
else
return (1);
}
但是对于第二个问题,我不太理解这个问题。如果我的字符串是“(()”,那么位置是第二个括号的位置吗?如果我的字符串是“(()(”)偏移括号的位置是什么?
谢谢你的帮助
【问题讨论】:
-
对于
"(()(",它与问题的答案相同,即寻找偏离规则的第一个括号的位置。 -
@ChetanRanpariya 如果我的字符串是“(()(”),请问括号的位置是什么,谢谢
-
如果你对作业的意义有疑问,你应该问你的教授或助教。我们也不知道它们是什么意思。
-
"(()("第一个偏括号的位置是1 -
@ChetanRanpariya 我认为是 4,最后一个括号!