发短信
时间限制:1000 ms | 内存限制:65535 KB
难度:3
- 描述
-
下图是手机常用的九键英文输入法界面,如果要输入字母'A',我们只需要按一次数字键2,按键顺序记为2;如果要输入字母'B'的话,我们需要连续按两次数字键2,按键顺序记为22;同理:字母'C’需要连续按3次数字键2,按键顺序记为222。通过这种方法,我们用手机10多个键就能输入26个英文字母。现在你的任务是统计一段英文用手机输入的按键顺序,同样,你也要能把按键顺序翻译成相应的英文内容。为了使问题简化,我们假设内容只有大写英文字母和空格。输入 有多组测试数据
每组测试数据占一行,有两种情况:
(1)短信内容(只含有若干个空格和大写字母,不超过1000个字符)
(2)短信按键顺序(只含有若干空格和数字,其中第一个肯定是数字,不超过1000个字符) 输出 对于每组测试数据:
如果是短信内容,输出每个字母的按键顺序,每个字母的按键顺序用空格隔开
如果是按键顺序,输出它代表的内容样例输入I LOVE YOU
HELLO WORLD
444 0 555 666 888 33 0 999 666 88
44 33 555 555 666 0 9 666 777 555 3样例输出
444 0 555 666 888 33 0 999 666 88
44 33 555 555 666 0 9 666 777 555 3
I LOVE YOU
HELLO WORLD编译代码:刚学c++,借用的库:
#pragma warning(disable:4786) #include<iostream> #include<stdio.h> #include<string> #include<cstring> #include<map> using namespace std; map<string,string>m; map< string , string >::iterator it ; void init() { m[""] = " " ; m[""] = "A" ; m[""] = "B" ; m[""] = "C" ; m[""] = "D" ; m[""] = "E" ; m[""] = "F" ; m[""] = "G" ; m[""] = "H" ; m[""] = "I" ; m[""] = "J" ; m[""] = "K" ; m[""] = "L" ; m[""] = "M" ; m[""] = "N" ; m[""] = "O" ; m[""] = "P" ; m[""] = "Q" ; m[""] = "R" ; m[""] = "S" ; m[""] = "T" ; m[""] = "U" ; m[""] = "V" ; m[""] = "W" ; m[""] = "X" ; m[""] = "Y" ; m[""] = "Z" ; m[" "] = "" ; m["A"] = "" ; m["B"] = "" ; m["C"] = "" ; m["D"] = "" ; m["E"] = "" ; m["F"] = "" ; m["G"] = "" ; m["H"] = "" ; m["I"] = "" ; m["J"] = "" ; m["K"] = "" ; m["L"] = "" ; m["M"] = "" ; m["N"] = "" ; m["O"] = "" ; m["P"] = "" ; m["Q"] = "" ; m["R"] = "" ; m["S"] = "" ; m["T"] = "" ; m["U"] = "" ; m["V"] = "" ; m["W"] = "" ; m["X"] = "" ; m["Y"] = "" ; m["Z"] = "" ; } void fun(char a[]) { it = m.find(a) ; if( it != m.end() ) cout<<it->second<<" "; } void fuu(char a[]) { it = m.find(a) ; if( it != m.end() ) cout<<it->second; } int main() { char str[],s[]; init(); int i=,j,k,n; while( gets(str)!=NULL) {k=; if(str[]>='' && str[]<='')//判断输入的是数字还是字符 {n=; int x=strlen(str);//把接收到的字符串都转化成单个的短字符串 for(i=; i<x; i++) { if(str[i]!=' ') { s[n++]=str[i]; if(i==x-) {s[n]='\0';fuu(s);} } else { s[n]='\0';n=; fuu(s); } } } else { for(j=;str[j]!='\0';j++)//如果是字符则一个一个的都赋值,一个字符就是一个字符串,包括空格; { s[]=str[j];s[]='\0'; fun(s); } } cout<<endl; } return ; }