题解 | #手机键盘#

手机键盘

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

全部评论

相关推荐

拒绝无效加班的小师弟很中意你:求职意向没有,年龄、课程冗余信息可以删掉,需要提升项目经历。排版需要修改。
点赞 评论 收藏
分享
10-07 23:57
已编辑
电子科技大学 Java
八街九陌:博士?客户端?开发?啊?
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务