题解 | #手机键盘# 手机键盘 九宫格

手机键盘

https://www.nowcoder.com/practice/20082c12f1ec43b29cd27c805cd476cd

#include <iostream>
#include <cstdio>
#include <string>
#include <map>

using namespace std;

int main() {
    map<int, char> input_time
    = {   // 现在假设每按一次需要花费一个时间段,
        {'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[100];
    string str2;
    while (EOF != scanf("%s", str)) {
        str2 = str;
        int len = str2.length();
        int last_key = 1, total_time = 0,
            wait_time = 2;   // 上一次输入的按键 默认为不带字母的1
        for (int i = 0; i < len; ++i) {
            if (last_key == keyMap[str[i]]) {
                total_time +=
                    wait_time;    // 总时间每次+2  等待时间需要花费两个时间段。
            }
            total_time += input_time[str[i]];
            last_key = keyMap[str[i]];
        }
        printf("%d\n", total_time);
    }
}

#机试#
全部评论
我也自己做,初始化键盘就得写十几分钟
点赞 回复 分享
发布于 03-08 21:51 广西

相关推荐

11-02 09:49
已编辑
货拉拉_测试(实习员工)
热爱生活的仰泳鲈鱼求你们别卷了:没事楼主,有反转查看图片
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务