在过go 的两个小时里,我一直在调试我的代码,以判断输入是否包含格式良好的括号.我所说的"格式良好"是指()()[]
或([()])
是可以接受的,但((((()
不是.
我不允许使用除<stdio.h>
以外的任何头文件
#include <stdio.h>
void cross(char str[], int i, int j) {
str[i] = 'X';
str[j] = 'X';
}
int iscrossed(char str[]) {
int i = 0;
while (str[i] != '\0') {
if (str[i] != 'X')
return 0;
i++;
}
return 1;
}
int check(char str[]) {
int i = 1, j;
while (str[i] != '\0') {
if (str[i] == ')') {
for (j = i - 1; j >= 0; j--) {
if (str[j] == '(') {
cross(str, str[i], str[j]);
}
break;
}
} else
if (str[i] == ']') {
for (j = i - 1; j >= 0; j--) {
if (str[j] == '[') {
cross(str, str[i], str[j]);
}
break;
}
}
i++;
}
if (iscrossed(str) == 1)
return 1;
else
return 0;
}
int main() {
char str[20];
scanf("%s", str);
printf("%d\n", check(str));
}
对于某些输入,程序打印一个零,然后是一个分段错误,对于其他输入,它只打印一个零.
如果你的答案告诉我my代码中的错误那就太好了,因为这是我首先要问的问题.