一般的手机的键盘是这样的:
1 | 2abc | 3def |
---|---|---|
4ghi | 5jkl | 6mno |
7pqrs | 8tuv | 9wxyz |
∗ | 0 | # |
要按出英文字母就必须要按数字键多下。例如要按出 x 就得按 9 两下,第一下会出 w,而第二下会把 w 变成 x。0 键按一下会出一个空格。
你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。
输入格式:
一行句子,只包含英文小写字母和空格,且不超过 200 个字符。
输出格式:
一行一个整数,表示按键盘的总次数。
在二维数组中分别初始化哪些字符对应多少次的按键次数,第一次中的还包含有空格' '
从字符串里一个一个挑出来对比 时间复杂度比较高 但是比较好理解
输入样例:
i have a dream
输出样例:
#include<stdio.h>
int main(){
char a[][9]={
{'a','d','g','j','m','p','t','w',' '},
{'b','e','h','j','n','q','u','x'},
{'c','f','i','l','o','r','v','y'},
{'s','z'}};
char str[100];
gets(str);
int i,sum=0,j,l,d=strlen(str);
for(i=0;i<d;i++){//输入的字符串 循坏
/
for(j=0;j<5;j++){//二维数组的查找循环
for(l=0;l<9;l++){
if(str[i]==a[j][l]){
sum+=j+1;break;
}
}
}
/
}
printf("%d",sum);
return 0;
}
23