识别(a|b)*b的C语言和C++代码实现
#include"stdio.h"
#include"string.h"
int fun()
{
char s[100];
scanf("%s",s);
int len=strlen(s);
for(int i=0;i<len;i++)
{
if(len-1==i)
{
switch(s[i]) {
case’b’:
break;
default:
return false;
}
}
else{
switch(s[i]) {
case ‘a’:
break;
case’b’:
break;
default:
return false;
}
}
}
return 1;
}
int main()
{
while(1){
if(fun()) printf(“YES\n”);
else printf(“NO\n”);
}
return 0;
}
//(a|b)*b
//C++代码
#include
#include
using namespace std;string str;
int judge(int x,int now){
if(now1 && x>=str.length())
return 1;
if(x>=str.length()) return 0;
if(str[x]‘a’) return judge(x+1,0); if(str[x]==‘b’)
return judge(x+1,1);
}
int main(){
while(1)
{
cin>>str;
if(judge(0,0))
cout<<“合法\n”;
else
cout<<“不合法\n”; }}