一般的手机的键盘是这样的:
1 2 abc 3 def
4 ghi 5 jkl 6 mno
7 pqrs 8 tuv 9 wxyz
- 0 #
要按出英文字母就必须要按数字键多下。例如要按出x就得按9两下,第一下会出w,而第二下会把w变成x。0键按一下会出一个空格。
你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。
输入输出格式
输入格式:
一行一个句子,只包含英文小写字母和空格,且不超过200个字符。
输出格式:
一行一个整数,表示按键盘的总次数。
输入输出样例
输入样例:
i have a dream
输出样例:
23
本小编更偏向打表的方式,因为这一道题最好的方法也是打表,不过不是写那么多if 浪费我打字的时间 所以采用了STL 可能这样的话打的会比if轻松一点
代码:不要砸鸡蛋
#include<iostream>
#include<string>
#include<map>//用到的STL 这里用了map
using namespace std;
map<char,int>m;
string str;
int ans=0;
int main(void){
getline(cin,str);//注意有空格,所以要得geiline,不然String遇到空格是会处理为字符串输出结束的
m['a']=1;//基本用法
m['b']=2;
m['c']=3;
m['d']=1;
m['e']=2;
m['f']=3;
m['g']=1;
m['h']=2;
m['i']=3;
m['j']=1;
m['k']=2;
m['l']=3;
m['m']=1;
m['n']=2;
m['o']=3;
m['p']=1;
m['q']=2;
m['r']=3;
m['s']=4;
m['t']=1;
m['u']=2;
m['v']=3;
m['w']=1;
m['x']=2;
m['y']=3;
m['z']=4;
m[' ']=1;
for(int i=0;i<str.size();i++){
ans+=m[str[i]];//把前面已经定义的值依次带入字符串内
}
cout<<ans;//结束
return 0;
}