题目:
模拟老式手机输入,九宫格布局如下:
题目输入为数字或者’-’,其中‘-’代表手机输入时等待的时间间隔,数字表示点击某
个按键的次数。比如点击两次 2,则输出为 B,四次 2,则输出为 A。
例:
输入:
255
输出:
AK
输入(等待间隔‘-’可以无限长,也可以没有):
2222------55
输出:
AK
- 分析
利用数组存储按键值。输入字符串,判断是否有连续相同的字符,如果有,记录其个数,作为访问数组的下标用 - 代码
#include<iostream>
using namespace std;
char m[10][4]={{},{},{'A','B','C'},{'D','E','F'},{'G','H','I'},{'J','K','L'},{'M','N','O'},{'P','Q','R','S'},{'T','U','V'},{'W','X','Y','Z'}};
int main(){
string s;
cin>>s;
int i;
for(i=0;i<s.length();){
int cnt=1;
int j=i;
while(s[j]==s[j+1]&&s[j]>='0'&&s[j]<='9'){
cnt++;
j++;
}
if(s[i]=='7'||s[i]=='9')
cout<<m[s[i]-'0'][(cnt-1)%4];
if(s[i]<='9'&&s[i]>='0'&&s[i]!='7'&&s[i]!='9')
cout<<m[s[i]-'0'][(cnt-1)%3];
i+=cnt;
}
return 0;
}