发布网友 发布时间:2022-04-20 18:12
共3个回答
热心网友 时间:2022-04-19 01:29
不能用状态机吗?比如扫描到一个字符,则跟规则比较一下。主要是把0-9还有点的因为字母都写出来,然后构建状态转移表,每次扫描一个字符,进行状态迁移。很容易就得到结果了。
当然暴力匹配的方法也可以的。就是每次拿10个英文字母跟开头的比较,然后逐步识别就好了。
热心网友 时间:2022-04-19 02:47
状态机的方式可用
char str[11]="onetwothree";
void fun()
{
int i;
int idle;//状态变量
for(i=0;i<11;i++)
{
switch(str[i]){
case 'o' :idle=1;break;
case 't' :idle=2;break;
defaut :idle=0;break;
}
switch(idle){
case 1:if(str[i+1]=='n'&&str[i+2]=='e') printf("1");break;
case 2:
{
if(str[i+1]=='w'&&str[i+2]=='o') printf("2");
else if(str[i+1]=='h'&&str[i+2]=='r'&&str[i+3]=='e'&&str[i+4]=='e') printf("3");
}break;
}
}
热心网友 时间:2022-04-19 04:22
有多少个数字啊?只有1-9?还是任意一个数啊?