一个字符串里含有一些小括号,包括左括号‘(’和右括号’)’。合法的序列形式中左、右括号的数量是相同的,每一对匹配的括号中总是左括号在前右括号在后,自左向右读取的时候不会出现未匹配的右括号。
请编写一个函数判断字符串中的括号是否是合法的序列
当str是合法括号序列时函数返回1,否则返回0。
#include<stdio.h>
int goodbrackets(char str[]);
int main() {
char c[1000];
printf("请输入:");
gets(c);
printf("结果为:");
if(goodbrackets(c)==1)
printf("true");
else printf("false");
}
int goodbrackets(char str[]) {
int i,judge=0;
for(i=0; i<100; i++) {
if(str[i]==')')
judge--;
if(judge==-1) { //只要出现多余')'立即可以判断
return(0);
break;
}
if(str[i]=='(')
judge++;
}
if(judge==0)return(1);//最后排除'('在最后的情况,即'(',')'数量是否相等
else return(0);
}
1712

被折叠的 条评论
为什么被折叠?



