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

手机键盘

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);
    }
}

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

相关推荐

2025-12-28 20:47
已编辑
北京工商大学 Java
程序员牛肉:我靠你这个实习经历其实最需要担心的点是你做的太多了,可能会被面试官怀疑是你伪造的。 交易状态机是你做的,支付多渠道是你做的,对账是你做的,结算还是你做的,重复支付也是你做的,整个服务的异常处理也是你做的。 其实你这个反而问题很大的,你想想站在面试官的角度,他是真的会相信你的能力很强,还是相信这份实习你伪造了大部分?我相信你真的做了这么多,但是删一些,废话删一删。你这个做的太多了反而真实性不可信。 后面再补一个项目,在github上找一个高star的项目学一学然后写到自己简历上。我觉得你能力肯定没问题。28届能做到这个份上很厉害,但是在求职市场中,你不是在跟28届的同学比,把你这个简历放到27届其实也就一般水平。 所以后续要想一想看看能不能给自己简历上搞点亮点,比如开源贡献呢?比如博客呢?
实习要如何选择和准备?
点赞 评论 收藏
分享
02-14 12:40
门头沟学院 Java
程序员花海:1.面试要求必须Java笔试不一定 2.难度对等秋招 远超于日常实习是因为同一批次且转正很多 竞争压力大 3.第一个加点指标,上线了就把接口性能加上去 使用本地缓存这个不算亮点 只是技术选型,要把为什么采用这个和背后的思考写出来而不是单纯堆叠技术没意义 4.八股要一直看 很容易忘记 5.拼团交易这个老问题 堆积技术 另外建议你把奖项合并到教育背景 没必要拆出来放最后
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务