题解 | #手机键盘#

手机键盘

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

#include <string.h>

int cnt(char c)
{
    if ('a' <= c && c <= 'c')
    {
        return (c - 'a' + 1);
    }
    else if ('d' <= c && c <= 'f')
    {
        return (c - 'd' + 1);
    }
    else if ('g' <= c && c <= 'i')
    {
        return (c - 'g' + 1);
    }
    else if ('j' <= c && c <= 'l')
    {
        return (c - 'j' + 1);
    }
    else if ('m' <= c && c <= 'o')
    {
        return (c - 'm' + 1);
    }
    else if ('p' <= c && c <= 's')
    {
        return (c - 'p' + 1);
    }
    else if ('t' <= c && c <= 'v')
    {
        return (c - 't' + 1);
    }
    else
    {
        return (c - 'w' + 1);
    }
    return 0;
}

int judge(char c)
{
    if ('a' <= c && c <= 'c')
    {
        return 1;
    }
    else if ('d' <= c && c <= 'f')
    {
        return 2;
    }
    else if ('g' <= c && c <= 'i')
    {
        return 3;
    }
    else if ('j' <= c && c <= 'l')
    {
        return 4;
    }
    else if ('m' <= c && c <= 'o')
    {
        return 5;
    }
    else if ('p' <= c && c <= 's')
    {
        return 6;
    }
    else if ('t' <= c && c <= 'v')
    {
        return 7;
    }
    else if ('w' <= c && c <= 'z')
    {
        return 8;
    }
    else
    {
        return 9;
    }
    return 0;
}

int main()
{
    char str[200];
    int i;
    int sum;
    char acc;
    while (scanf("%s", str) != EOF)
    {
        sum = 0;
        acc = '\0';
        for (i = 0; i < strlen(str); i++)
        {
            if (judge(acc) == judge(str[i]))
                sum += 2;
            sum += cnt(str[i]);
            acc = str[i];
        }
        printf("%d\n", sum);
    }
    return 0;
}
  1. 计算按到某个字母时间段
  2. 判断连续字母是否在一个按键,依据判断结果+2
全部评论

相关推荐

05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
那一天的Java_J...:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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