#include <iostream> using namespace std; int main() { 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 time = 0; string str;//创建一个字符串数据类型; cin >> str;//输入字符串 for (int i = 0; i < str.size(); ++i) {//当i小于字符串的长度时进入循环,结束后i自加; time += keytab[str[i] - 'a']; //按一个按键的时间等于时间数组keytab[字母下标]“str[i]-'a'”表示ASII计算 //表示字符串字母的ASII值减去a的ASII值,可以计算出该字母在keytab中的数组下标(0-25) if (i != 0 && keytab[str[i] - 'a'] - keytab[str[i - 1] - 'a'] == str[i] - str[i - 1]) { //如果i!=0表示如果不是字符串的第一个数,且字母本身的间距等于按键次数的差值(属于同一个按键)Time加2 time += 2; } } std::cout << time << std::endl; }