手机
题目描述 Description
手机的键盘是这样的:
1 2 abc 3 def
4 ghi 5 jkl 6 mno
7 pqrs 8 tuv 9 wxyz
* 0 #
要按出英文字母就必须要按数字键多下。例如要按出x就得按9两下,第一下会出w,而第二下会把w变成x。0键按一下会出一个空格。
你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。
输入描述 Input Description
一行。一个句子,只包含英文小写字母和空格,且不超过200个字符。
输出描述 Output Description
一行。一个整数,表示按键盘的总次数。
样例输入 Sample Input
i have a dream
样例输出 Sample Output
23
c++编程实现
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
static int c=0;
void f(char ch)
{
switch(ch)
{
case'a':case'd':case'g':case'j':case'm':case'p':case't':case'w':case' ': c++;break;
case'b':case'e':case'h':case'k':case'n':case'q':case'u':case'x':c+=2;break;
case'c':case'f':case'i':case'l':case'o':case'r':case'v':case'y':c+=3;break;
case's':case'z':c+=4;break;
default:break;
}
}
int main()
{ char *s=new char[200];
cin.getline(s,200);
for(int i=0;i<strlen(s);i++)
{
f(s[i]);
}
cout<<c<<endl;
delete []s;
return 0;
}