实现一个可以识别由0和1构成的串,并且这个串至少含有一个1,串的最后一个1后面跟着偶数个0(包括0个)
int isFinateMata(char *s){
State state = START;
int i = 0;
while(1){
switch(state){
case START:
{
if(s[i] == '0'){
state = START;
i++;
}else if(s[i] == '1'){
state = END;
i++;
}else{
state = ERROR;
}
printf("start\n");
break;
}
case MID:
{
if (s[i] == '0' || s[i] == '1'){
state = END;
i++;
}
else{
state = ERROR;
}
printf("mid\n");
break;
}
case END:
{
if(s[i] == '0'){
state = MID;
i++;
}else if(s[i] == '1'){
state = END;
i++;
}else if(s[i] == '\0'){
state = NORMALEND;
}else{
state = ERROR;
}
printf("end\n");
break;
}
}
if (state == ERROR){
return 0;
}
if (state == NORMALEND){
printf("normal end\n");
return 1;
}
}
}