题解 | #手机键盘#,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;
}

全部评论

相关推荐

头像
05-27 20:32
已编辑
深度学习
工行数据中心 偏运维养老 到手可能18w
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务