题解 | #手机键盘#,c++算是比较简单
手机键盘
https://www.nowcoder.com/practice/20082c12f1ec43b29cd27c805cd476cd
#include<string> #include<vector> #include<iostream> #include<cstdio> #include<utility> using namespace std; pair<int,int> find(char s,vector<string>key){//寻找字母对应的位置,i对应键盘数字,j对应按键上第几个字母 for(int i=0;i<(int)key.size();i++){ for(int j=1;j<(int)key[i].size();j++){ if(key[i][j]==s) return {i,j}; } } return {0,0}; } int main(){ string s; vector<string>key={{"0abc"},{"0def"},{"0ghi"},{"0jkl"},{"0mno"},{"0pqrs"},{"0tuv"},{"0wxyz"}};//加入0的原因是数组下标是从0开始的,加入后可以免去调整的麻烦,如a为key[1][1],即位于按键上的第一个字母 //对应的键盘: // abc def //ghi jkl mno //pqrs tuv wxyz while(cin>>s){ int temp=-1;//上一个按的字母在某个按键上的下标 int time=0;//时间 for(int i=0;i<(int)s.size();i++){ pair<int,int> index=find(s[i],key); time+=index.second; if(temp==index.first)//如果与上个字母在同个按键上,time+=2 time+=2; temp=index.first; } cout<<time<<endl; } return 0; }