圆括号匹配问题
圆括号匹配 比如
(a+b*9)(a+B)匹配返回1
(Com)$)不匹配返回0
// 判断圆括号是否匹配
int check(char *input, int len)
{
char *src = input;
int left = 0;
int right = 0;
int i;
for (i = 0; i < len; i++)
{
if (*src == '(')
left++;
else if (*src == ')')
right++;
src++;
// 左扩号必须在前面
if (right > left)
return 0;
}
if (left == right && left > 0)
return 1;
return 0;
}
int main(void)
{
char str[100] = {0};
int ret;
while (1)
{
scanf("%s", str);
ret = check(str, strlen(str));
printf("%d\n", ret);
}
return 0;
}
网上都是用栈实现的,这样实现有什么问题吗?给一个反例?