Itz*_*984 -4 c string recursion
我希望得到一个包含在字符串中的字符串,每次我看到(xxx)
我只能获得xxx.
我试图以递归方式使用函数来执行此操作int find(char* str).
1如果没有'('或')'没有(全部删除),则该函数将返回,0否则返回.
字符串可以保持原样,只需要检查规定的条件.
确定输入: (xxx)(zzz(yyy)zzz)
不良输入: xx(x(zzz)(y
怎么能在C中完成?
简单的堆栈是解决这个问题的好方法.每次你看到'('推入堆栈.每次看到')'弹出堆栈.如果您尝试弹出一个空堆栈或者在完成后将剩余的东西留在堆栈中,那么输入就很糟糕了.
编辑:你也可以用计数器做同样的事情.分别增加和减少.如果计数器变为负数,则返回false.否则,当你完成时,如果你是0,则返回true,否则返回false.所以计数器只代表'堆栈'的大小.
我认为这可能是答案,继续以前的abelenky:
int find(char *str)
{
int pars = 0, pos = 0;
while(str[pos] != 0) {
if (str[pos] == '(') pars++;
if (str[pos] == ')') pars--;
if (pars < 0) return 0; // closes before opens -> end here
pos++;
}
if (pars != 0) return 0; // not matched result
else return 1; // matched result
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |