题目:拼音翻译成阿拉伯数字(只有数字拼音)
输入一串拼音,输出它代表的阿拉伯数字(Ling,Yi,Er,San,Si,Wu,Liu,Qi,Ba,Jiu),数字不会超过十万
为了处理方便,输入一定是只有数字拼音的,没有其他的单词或者字符。
输入:JiuBaWuSi
输出:9854
基本思路:
可以看出拼音最短为2个字符,最长为4个字符。
两位开始扫,没有,扫三位,三位没有扫四位,二位三位四位都没有,则从下一位开始扫。
#include <string>
#include <iostream>
using namespace std;
void filter(string str)
{
//各字符串的下标即为其对应的阿拉伯数字
char *ch[]={"Ling","Yi","Er","San","Si","Wu","Liu","Qi","Ba","Jiu"};
int i,j,k,len;
string substr;
len=str.length();
for(i=0;i<len;i++)
{
//可以看出拼音最短为2个字符,最长为4个字符
for(j=i+1;j<len&&(j-i)<4;j++)
{
substr=str.substr(i,j-i+1);
for(k=0;k<10;k++)
if(!substr.compare(ch[k]))
{
printf("%d",k);//相等则打印出数字
break;
}
}
}
printf("\n");
}
int main()
{
string str;
while(cin>>str){
//cin>>str;
filter(str); }
return 0;
}
测试结果,可能不周全,欢迎查漏补缺