您的位置:首页 > 其它

华为机试题之拼音转数字

2016-06-11 18:51 381 查看
输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:

描述: 拼音 yi er san si wu liu qi ba jiu

阿拉伯数字 1 2 3 4 5 6 7 8 9

输入字符只包含小写字母,所有字符都可以正好匹配

运行时间限制:无限制

内存限制: 无限制

输入: 一行字符串,长度小于1000

输出: 一行字符(数字)串

样例输入: yiersansi

样例输出: 1234

解法一(C++)

#include<iostream>
using namespace std;

void convert(char *str)
{
int i;
int length;
length = strlen(str);
for(i = 0 ; i < length ; )
{
switch(str[i])
{
case 'y':
cout<<"1";
i += 2;
break;
case 'e':
cout<<"2";
i += 2;
break;
case 's':
if(str[i + 1] == 'a')
{
cout<<"3";
i += 3;
}
else
{
cout<<"4";
i += 2;
}
break;
case 'w':
cout<<"5";
i += 2;
break;
case 'l':
cout<<"6";
i += 3;
break;
case 'q':
cout<<"7";
i += 2;
break;
case 'b':
cout<<"8";
i += 2;
break;
case 'j':
cout<<"9";
i += 3;
break;
}
}
printf("\n");
}

int main()
{
char str[255];
while(cin>>str)
{
convert(str);
}
return 0;
}


已经运行通过,这里思路就是根据yi er san si wu liu qi ba jiu 首字母的不同来判断,其中要注意san 和si首字母相同,所以要判断一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: