输入一串拼音,输出它代表的阿拉伯数字(Ling,Yi,Er,San,Si,Wu,Liu,Qi,Ba,Jiu),数字不会超过十万
为了处理方便,输入一定是只有数字拼音的,没有其他的单词或者字符。
输入:JiuBaWuSi
输出:9854
基本思路:
可以看出拼音最短为2个字符,最长为4个字符。
两位开始扫,没有,扫三位,三位没有扫四位,二位三位四位都没有,则从下一位开始扫。
#include<iostream>
#include<string>
using namespace std;
void change(string str){
char *ch[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
int i,j,len,k;
len=str.length();
string s;
for(i=0;i<len;i++)
for(j=i+1;j<len&&j-i+1<=4;j++){
s=str.substr(i,j-i+1);
for(k=0;k<=9;k++)
if(!s.compare(ch[k])){
cout<<k;
break;
}
}
cout<<endl;
}
void main(){
string s;
while(cin>>s)
change(s);
}