手机

tech2022-08-21  131

题目描述

一般的手机的键盘是这样的: 要按出英文字母就必须要按数字键多下。例如要按出 x 就得按 9 两下,第一下会出 w,而第二下会把 w 变成 x。0 键按一下会出一个空格。 你的任务是读取若干句只包含英文小写字母和空格的句子,求出要在手机上打出这个句子至少需要按多少下键盘。

输入格式

一行句子,只包含英文小写字母和空格,且不超过 200 个字符。

输出格式

一行一个整数,表示按键盘的总次数。

输入输出样例

输入

i have a dream

输出

23

//使用STL中的映射map #include<iostream> #include<cstring> #include<map> using namespace std; map<char,int> d; int main() { d['a']=d['d']=d['g']=d['j']=d['m']=d['p']=d['t']=d['w']=1; d['b']=d['e']=d['h']=d['k']=d['n']=d['q']=d['u']=d['x']=2; d['c']=d['f']=d['i']=d['l']=d['o']=d['r']=d['v']=d['y']=3; d['s']=d['z']=4; string s; getline(cin,s); int len=s.length(); int cnt=0; int i=0; while(s[i]) { if('a'<=s[i]&&s[i]<='z') { cnt+=d[s[i]]; } else if(s[i]==' ') { cnt++; } i++; } cout<<cnt; return 0; }

//整型常量数组 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<string> #include<cmath> using namespace std; int ans; string a; int num[26]={1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4}; int main() { getline(cin,a); for(int i=0;i<a.length();i++) { if(a[i]>='a'&&a[i]<='z') { ans+=num[a[i]-'a']; } if(a[i]==' ') { ans++; } } printf("%d",ans); return 0; }

//字符型常量数组 #include<iostream> #include<cstring> using namespace std; char s1[]={" adgjmptw"},s2[]={"behknqux"},s3[]={"cfilorvy"},s4[]={"sz"}; int main() { char c; int s=0; while((c=getchar())!='\n') { if(strchr(s1,c)) s++; else if(strchr(s2,c)) s+=2; else if(strchr(s3,c)) s+=3; else if(strchr(s4,c)) s+=4; } cout<<s<<endl; return 0; }
最新回复(0)