华为机试题之拼音转数字

来源:互联网 发布:淘宝上便宜手机能买吗 编辑:程序博客网 时间:2024/04/20 23:33

输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:
描述: 拼音 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首字母相同,所以要判断一下。

0 0
原创粉丝点击