题解 | #手机键盘#
手机键盘
https://www.nowcoder.com/practice/20082c12f1ec43b29cd27c805cd476cd
#include<cstdio> #include<map> using namespace std; int main() { map<char, int> inputetime = {//每个字母按几下 {'a', 1}, {'b', 2}, {'c', 3}, {'d', 1}, {'e', 2}, {'f', 3}, {'g', 1}, {'h', 2}, {'i', 3}, {'j', 1}, {'k', 2}, {'l', 3}, {'m', 1}, {'n', 2}, {'o', 3}, {'p', 1}, {'q', 2}, {'r', 3}, {'s', 4}, {'t', 1}, {'u', 2}, {'v', 3}, {'w', 1}, {'x', 2}, {'y', 3}, {'z', 4} }; map<char, int> keymap = { {'a', 2}, {'b', 2}, {'c', 2}, {'d', 3}, {'e', 3}, {'f', 3}, {'g', 4}, {'h', 4}, {'i', 4}, {'j', 5}, {'k', 5}, {'l', 5}, {'m', 6}, {'n', 6}, {'o', 6}, {'p', 7}, {'q', 7}, {'r', 7}, {'s', 7}, {'t', 8}, {'u', 8}, {'v', 8}, {'w', 9}, {'x', 9}, {'y', 9}, {'z', 9} }; char str[101]; while (scanf("%s", str) != EOF) { int lastinput = 1;//初始置为1; int totaltime = 0; for (int i = 0; str[i] != '\0'; ++i) { if (lastinput == keymap[str[i]]) { totaltime = totaltime + 2; } totaltime = totaltime + inputetime[str[i]]; lastinput = keymap[str[i]]; //记录本次按下的数组 } printf("%d\n", totaltime); } }