题目描述
九宫格输入法适合在手机上使用,它在屏幕上的布局如下:
1 | 2 abc | 3 def |
4 ghi | 5 jkl | 6 mno |
7 pqrs | 8 tuv | 9 wxyz |
0 |
如果要打出一个 x
,就需要按两下 9
。第一次按 9
号键会出现 w
,按第二次才会将 w
改成 x
。注意 0
号键的作用是打出一个空格。
给定一些仅有小写字母和空格组成的字符序列,请计算用九宫格输入法总计需要按多少次键。
输入格式
单个字符序列:表示打印的内容,保证只由小写字母及空格组成,且两个单词之间有且只有一个空格。
输出格式
单个整数:表示按键的总次数。
数据范围
设 n 表示输入字符串的长度,则有 1≤n≤1000。
样例数据
输入:
hello world
输出:
26
题解
本题关键点:用getline函数将整行数据(连同空格)写入n中,然后通过枚举法进行计算。代码如下。
#include <iostream>
using namespace std;
int main() {
int sum;
string n;
getline(cin, n);
sum=0;
for (int i = 0; i < n.length(); i++) {
if (n[i]=='a'||n[i]=='d'||n[i]=='g'||n[i]=='j'||n[i]=='m'||n[i]=='p'||n[i]=='t'||n[i]=='w'||n[i]==' ')
sum += 1;
if (n[i]=='b'||n[i]=='e'||n[i]=='h'||n[i]=='k'||n[i]=='n'||n[i]=='q'||n[i]=='u'||n[i]=='x')
sum += 2;
if (n[i]=='c'||n[i]=='f'||n[i]=='i'||n[i]=='l'||n[i]=='o'||n[i]=='r'||n[i]=='v'||n[i]=='y')
sum += 3;
if (n[i]=='s'||n[i]=='z')
sum += 4;
}
cout << sum << endl;
return 0;
}