题解 | 手机键盘
手机键盘
https://www.nowcoder.com/practice/20082c12f1ec43b29cd27c805cd476cd
#include <iostream> #include <map> #include <vector> using namespace std; const int waitTime = 2; const int keyTime = 1; int getTime(map<char, pair<int, int>>& keyMap, vector<char> charArray) { int sum = 0; int lastKey = -1; for (auto it = charArray.begin(); it != charArray.end(); it++) { pair<int, int> curChar = keyMap[*it]; if (curChar.first == lastKey) { sum += waitTime; } sum = sum + curChar.second * keyTime; lastKey = curChar.first; } return sum; } int main() { // 初始化键盘映射 map<char, pair<int, int>> keyMap = { {'a', {2,1}}, {'b', {2,2}}, {'c', {2,3}}, {'d', {3,1}}, {'e', {3,2}}, {'f', {3,3}}, {'g', {4,1}}, {'h', {4,2}}, {'i', {4,3}}, {'j', {5,1}}, {'k', {5,2}}, {'l', {5,3}}, {'m', {6,1}}, {'n', {6,2}}, {'o', {6,3}}, {'p', {7,1}}, {'q', {7,2}}, {'r', {7,3}}, {'s', {7,4}}, {'t', {8,1}}, {'u', {8,2}}, {'v', {8,3}}, {'w', {9,1}}, {'x', {9,2}}, {'y', {9,3}}, {'z',{9,4}} }; // 处理输入 string str; while (cin >> str) { vector<char> charArray(str.begin(), str.end()); charArray.push_back('\0'); cout << getTime(keyMap, charArray) << endl; } return 0; }