美文网首页
手机键盘

手机键盘

作者: JuGyang | 来源:发表于2019-01-08 00:31 被阅读0次

题目链接
题目描述
按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在“1”键上,输入a只需要按一次,输入c需要连续按三次。 如果连续两个字符不在同一个按键上,则可直接按,如:ad需要按两下,kz需要按6下 如果连续两字符在同一个按键上,则两个按键之间需要等一段时间,如ac,在按了a之后,需要等一会儿才能按c。 现在假设每按一次需要花费一个时间段,等待时间需要花费两个时间段。 现在给出一串字符,需要计算出它所需要花费的时间。

输入描述
一个长度不大于100的字符串,其中只有手机按键上有的小写字母

输出描述
输入可能包括多组数据,对于每组数据,输出按出Input所给字符串所需要的时间

示例1

输入
bob
www
输出
7
7

代码实现

#include <stdio.h>
#include <string.h>

char buf[26][2] = {
    {'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},
};

int main(void) {
    char str[100] = { 0 };
    int cnt = 0;
    int tmp_1 = 0;
    int tmp_2 = 0;
    int j = 0;
    while (scanf("%s", str) != EOF) {
        cnt = 0;
        int n = strlen(str);
        for (int i = 0; i < n; i++) {
            if (str[i + 1]) {
                j = 0;
                while (str[i] - buf[j][0]) {
                    j++;
                }
                cnt += buf[j][1];
                tmp_1 = buf[j][1];
                if ((buf[j][0] >= 'p' && buf[j][0] <= 's') || (buf[j][0] >= 'w' && buf[j][0] <= 'z')) {
                    tmp_2 = 4 - tmp_1;
                    if (str[i + 1] >= buf[j - tmp_1 + 1][0] && str[i + 1] <= buf[j + tmp_2][0]) {
                        cnt += 2;
                    }
                } else {
                    tmp_2 = 3 - tmp_1;
                    if (str[i + 1] >= buf[j - tmp_1 + 1][0] && str[i + 1] <= buf[j + tmp_2][0]) {
                        cnt += 2;
                    }
                }
            } else {
                j = 0;
                while (str[i] - buf[j][0]) {
                    j++;
                }
                cnt += buf[j][1];
            }
        }
        printf("%d\n", cnt);
    }
    return 0;
}

相关文章

  • 手机键盘

    题目链接题目描述按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在“1”键上,输入a只需要按一次,输...

  • 论打字

    手机键盘打字好还是实体键盘打字好?

  • 滴滴键盘拼图

    以下是图文教程: 先启用「滴滴键盘」:打开手机的「设置」 > 通用 > 键盘 > 键盘 > 添加新键盘 >滴滴键盘...

  • Android 工程模式命令

    华为手机:拨号键盘输入 ##2846579## oppo 手机:拨号键盘输入 *#36446337#

  • android 获取虚拟键盘高度

    判断是否有虚拟键盘 获取虚拟键盘高度 有虚拟键盘的手机,获取到的手机屏幕的高度包括了虚拟键盘的高度,在进行一些计算...

  • 随碰随总结(持续更新)

    监听手机键盘事件

  • 关于表单的交互

    手机键盘 根据输入内容类型选择不同的键盘,如输入手机号,输入框获取焦点后,数字键盘自动弹出。 联动键盘。简单来说,...

  • 手机软键盘弹出时影响布局的解决方法_javascript技巧

    手机软键盘弹出时影响布局的解决方法_javascript技巧 软键盘影响布局 摘要:本文讲的是手机软键盘弹出时影响...

  • 突然坏掉的东西

    今天拿出蓝牙键盘,手机放到支架上,摆开阵势,准备码字。 结果键盘一开,手机屏疯狂乱码。我一看,完了,键盘废掉了。 ...

  • iOS 取消手机键盘

    概述 当存在UItextField时,通常有取消键盘的需求。一般有两种解决方案 手势关闭键盘:UITapGestu...

网友评论

      本文标题:手机键盘

      本文链接:https://www.haomeiwen.com/subject/hfpmrqtx.html