1.使用map来记录字母对应的次数
2.判断连续两个字符是否在同一个按键上,即判断他们在str中的行数是否相同
//手机键盘
#include<iostream>
#include<map>
using namespace std;
string str[8]={"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
//判断连续两个字符是否在同一个按键上 ans[i]与ans[i+1]
bool iscurr(char x,char y){
int f1=0,f2=0;
for(int i=0;i<8;i++){
for(int j=0;j<str[i].size();j++){
if(x==str[i][j]) f1=i;
if(y==str[i][j]) f2=i;
}
}
if(f1==f2) return true;
else return false;
}
int main(){
map<char,int> str_map;//记录字母对应的次数
for(int i=0;i<8;i++){
int end=str[i].size();
for(int j=0;j<end;j++) str_map.insert({str[i][j],j+1});
}
string ans;
while(cin>>ans) {
int cnt = 0;
for (int i = 0; i < ans.size(); i++) {
if(i>0 && i<ans.size() && iscurr(ans[i],ans[i-1])) cnt=cnt+2+str_map[ans[i]];
else cnt+=str_map[ans[i]];
}
cout<<cnt<<endl;
}
}