关键就在于如何去判断相邻两个字符是否属于同一按键内,KEY:字母在字符串中本身的间距等于按键次数之差,则属于同一按键

#include<iostream>
#include <cstdio>

using namespace std;

int keyTab[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(){
    string str;
    while(cin>>str){
        int time =0;
        for(int i=0;i< str.size();i++){      //将所有的输入str一个一个输入
            time +=keyTab[str[i]-'a'];        //每次把该数组对应的提取出来,该数字就是按键的等待时间
            if(i!=0 && str[i]-str[i-1] == keyTab[str[i]-'a'] -keyTab[str[i-1]-'a'])    //判断相邻两个字符是否属于同一按键内,若在同一键内,相邻按键次数字母按键均为相同
                time +=2;        //两个字符在同一个键上,中间需要间隔时间2
        }
        printf("%d\n",time);
    }
    return 0;
}