题目描述:
按照手机键盘输入字母的方式,计算所花费的时间 如:a,b,c都在“1”键上,输入a只需要按一次,输入c需要连续按三次。
如果连续两个字符不在同一个按键上,则可直接按,如:ad需要按两下,kz需要按6下 如果连续两字符在同一个按键上,则两个按键之间需要等一段时间,
如ac,在按了a之后,需要等一会儿才能按c。 现在假设每按一次需要花费一个时间段,等待时间需要花费两个时间段。 现在给出一串字符,
需要计算出它所需要花费的时间。 输入描述:
一个长度不大于100的字符串,其中只有手机按键上有的小写字母
输出描述:
输入可能包括多组数据,对于每组数据,输出按出Input所给字符串所需要的时间; 输入
bob
www 输出
7
7
自己思路:
 public class fs_5 {
public static void main(String[] args) {
int[] eachtime = {1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4};//每一个字母对应需要按下的次数
int[] group = {1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 8, 8, 8, 9, 9};//一共八组,用来判断是否在一个按钮上,故意设置一个9初始化pre为{ Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int sum = 0;
String string = scanner.next();
char pre = '{';//是z后面一个字母
char[] arr = string.toCharArray();//char 数组
for (int i = 0; i < arr.length; i++) {
int cha = arr[i] - 'a';
int cha_1 = pre - 'a';
if (group[arr[i] - 'a'] == group[pre - 'a']) {
sum += 2;
}
sum += eachtime[arr[i] - 'a'];
pre = arr[i]; }
System.out.println(sum); }
}
在一个回复上看到的很好的思路:
只需要一个数组就够用了啊。用key顺序记录26个字母按键次数,
然后判断两个字母是否在同一个按键上,如果在同一个按键上,那么下标差(字母间距)
就等于按键次数差
 #include<iostream>
#include<string>
using namespace std;
int main()
{
int key[] = {,,,,,,,,,,,,,,,,,,,,,,,,,};
string str;
while(cin>>str)
{
int count = key[str[]-'a'];
for(int i=;i<str.size();++i)
{
count += key[str[i]-'a'];
if(key[str[i]-'a']-key[str[i-]-'a']==str[i]-str[i-])//判断是否在同一个按键上
count+=;
}
cout<<count<<endl;
}
}
自愧不如.这个问题很多网上的都是错误的在严格的oj上都是测试不对的,以上两种是比较严谨的.

清华机试中手机键盘问题求解 java 和 c的更多相关文章

  1. Huawei校招机试中的猴子吃桃问题

    //============================================================================ // Name : Monkey& ...

  2. 华为JAVA机试流程

    1.JAVA机试流程:①打开IE浏览器,输入机试系统IP地址(以当天告知的地址为准):②输入姓名.手机,选择“C/C++”或“JAVA”,登录:③登录后显示题目,阅读题目并点击页面最下方的“下载框架文 ...

  3. java机试要点

    Java机试准备 一般结构:   import java.util.Scanner; public class Main{ public static void main(String[] args) ...

  4. Java中获取键盘输入值的三种方法

    Java中获取键盘输入值的三种方法     Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值 ...

  5. Java编程中获取键盘输入实现方法及注意事项

    Java编程中获取键盘输入实现方法及注意事项 1. 键盘输入一个数组 package com.wen201807.sort; import java.util.Scanner; public clas ...

  6. Java练习 SDUT-2618_手机键盘

    手机键盘 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 大家应该都见过那种九键的手机键盘,键盘上各字母的分布如下图所示 ...

  7. 华为 2015 机试 输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的不要删除,例如,对应输出为:33aabb55pin。

    package 华为机试; //C++ 输入:由数字和字母组成的字符串,例如:333aaabb55ppin //输出:数字后面的连续出现的(2个或多个)相同字符(数字或者字符),删去一个,非数字后面的 ...

  8. 华为OJ机试训练(一)

    题目1 -- 通过输入英文句子.将每一个单词反过来,标点符号顺序不变.非26个字母且非标点符号的情况就可以标识单词结束. 标点符号包含,.!? 比如输入:Hello, I need an apple. ...

  9. web机试

    测试: <html><style> </style><title>Demo</title> <body><div > ...

随机推荐

  1. jQueryEasyUI应用 – datagrid之CRUD应用

    本文 jQueryEasyUI + SpringBoot + Mybatis整合Datagrid的CRUD应用 一.前言准备 1.我们将使用下面的插件: datagrid:向用户展示列表数据. dia ...

  2. 基于Docker的Mysql主从复制搭建

    来源:https://www.cnblogs.com/songwenjie/p/9371422.html?tdsourcetag=s_pctim_aiomsg   为什么基于Docker搭建? 资源有 ...

  3. Vue之添加全局变量

    定义全局变量 原理: 设置一个专用的的全局变量模块文件,模块里面定义一些变量初始状态,用export default 暴露出去,在main.js里面使用Vue.prototype挂载到vue实例上面或 ...

  4. java的equals()与hashCode()以及包装类中的实现

    1. hashcode 1.1 hashcode来源 1.2 hashcode的形式 1.3 hashcode目的 1.4 hashcode规则 1.5 hashcode作用体现 1.6 重写hash ...

  5. 使用Dockerfile定制ubuntu+nginx镜像

    实验目的:书写Dockerfile,定制ubuntu 14.04 + nginx 1.14.0的镜像. 实验过程: 1. 下载nginx-1.14.0  http://nginx.org/downlo ...

  6. 启用hyper-v后无法卸载vmware

    机器上启用了hyper-v,想卸载vmware,报错了: Error: This product may not be installed on a computer that has Microso ...

  7. 深入理解Redis系列之SpringBoot集成Redis

    SpringBoot环境 快速搭建一个SpringBoot工程 进入 https://start.spring.io 网站, 使用该网站初始化一个SpringBoot工程 添加相关依赖 因为使用spr ...

  8. Linux Mysql创建用户并分配权限

    1.查看全部的用户: select user,host from mysql.user\G; 2.新建用户: create user  ‘用户名’@‘主机名’  identified by ‘用户密码 ...

  9. day48-python爬虫学习三

    Python的urllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功能.他们两个最显着的差异如下: urllib2可以接受一个Request对象,并以此可以来设置一个URL的h ...

  10. Python类之类的成员

    对于一个学C++的朋友来说,Python类中,哪些是私有成员,哪些是共有成员,估计一直傻傻分不清. 一.本篇博客要解决的问题: Python类中,哪些是私有成员?哪些是共有成员? 二. 关于Pytho ...