题目描述
九宫格输入法适合在手机上使用,它在屏幕上的布局如下:
如果要输出一个 x,就需要按两下 9。第一次按 9 号键会出现 w,按第二次 9 号键才会将 w 改成 x。注意 0 号键的作用是输入空格,只要按一次 0 号键就会输出一个空格。
给定一些仅有小写字母和空格组成的字符串 s,请统计用九宫格输入法需要按多少次键,才能在屏幕上显示这个字符串。
输入
单个字符序列:表示需要出现在屏幕上的内容,保证仅由小写字母及空格组成。
输出
单个整数:表示按键的总次数。
数据范围
设 s表示输入字符串的长度,则有 1≤s≤255。
样例输入
hello world
样例输出
25
分析
这是一个字符串的问题
首先定义变量
因为这里输入有空格,所以要用:
getline(cin,a)
代码如下(因为我只会枚举法,有些麻烦,其他方法还请代码大神们自己编吧):
#include<bits/stdc++.h>
using namespace std;
int main(){
string zc;
getline(cin,zc);
long long sum=0,l=zc.size();
for(int i=0;i<l;i++){
if(zc[i]=='a') sum=sum+1;
if(zc[i]=='b') sum=sum+2;
if(zc[i]=='c') sum=sum+3;
if(zc[i]=='d') sum=sum+1;
if(zc[i]=='e') sum=sum+2;
if(zc[i]=='f') sum=sum+3;
if(zc[i]=='g') sum=sum+1;
if(zc[i]=='h') sum=sum+2;
if(zc[i]=='i') sum=sum+3;
if(zc[i]=='j') sum=sum+1;
if(zc[i]=='k') sum=sum+2;
if(zc[i]=='l') sum=sum+3;
if(zc[i]=='m') sum=sum+1;
if(zc[i]=='n') sum=sum+2;
if(zc[i]=='o') sum=sum+3;
if(zc[i]=='p') sum=sum+1;
if(zc[i]=='q') sum=sum+2;
if(zc[i]=='r') sum=sum+3;
if(zc[i]=='s') sum=sum+4;
if(zc[i]=='t') sum=sum+1;
if(zc[i]=='u') sum=sum+2;
if(zc[i]=='v') sum=sum+3;
if(zc[i]=='w') sum=sum+1;
if(zc[i]=='x') sum=sum+2;
if(zc[i]=='y') sum=sum+3;
if(zc[i]=='z') sum=sum+4;
if(zc[i]==' ') sum=sum+1;
}
cout<<sum;
return 0;
}