小米2017秋招真题——电话号码分身问题(Java版)
原题描述如下:

通过对各个数字对应的英文单词的分析,可以发现一些规律:
字母Z为0独占,字母W为2独占,字母U为4独占,字母X为6独占,字母G为8独占;
在过滤一遍0、2、4、6、8后,字母O为1独占,字母H为3独占,字母F为5独占,字母S为7独占;
再次过滤0、1、2、3、4、5、6、7、8后,剩下的I则只为9独占。
因此,基于以上规律,编写如下处理代码:(Java版)
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner; public class MiNumber { public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String[] arr = new String[n];
in.nextLine(); //先调用一次nextLine(),将该行剩下的内容抛弃
for(int i=0;i<n;i++)
arr[i] = in.nextLine(); getResult(n,arr);
in.close();
} public static void getResult(int n,String[] arr){
for(int i=0;i<n;i++){
List<String> numberC = new ArrayList<String>(arr[i].length());
for(int j=0;j<arr[i].length();j++)
numberC.add(arr[i].charAt(j)+"");
getNumber(numberC);
numberC = null;
}
} public static void getNumber(List<String> numberC){
StringBuilder sb = new StringBuilder();
if(numberC.size()>=4&&numberC.contains("Z")){ //字母Z为0独占
sb.append("2"); //2+8 =10,取个位0,是最小的那个数字
numberC.remove("Z");
numberC.remove("E");
numberC.remove("R");
numberC.remove("O");
}
if(numberC.size()>=3&&numberC.contains("W")){ //字母W为2独占
sb.append("4"); //4+8 =12,取个位2,是最小的那个数字
numberC.remove("T");
numberC.remove("W");
numberC.remove("O");
}
if(numberC.size()>=4&&numberC.contains("U")){ //字母U为4独占
sb.append("6"); //6+8 =14,取个位4,是最小的那个数字
numberC.remove("F");
numberC.remove("O");
numberC.remove("U");
numberC.remove("R");
}
if(numberC.size()>=3&&numberC.contains("X")){ //字母X为6独占
sb.append("8"); //8+8 =16,取个位6,是最小的那个数字
numberC.remove("S");
numberC.remove("I");
numberC.remove("X");
}
if(numberC.size()>=5&&numberC.contains("G")){ //字母G为8独占
sb.append("0"); //0+8 =8,取个位8,是最小的那个数字
numberC.remove("E");
numberC.remove("I");
numberC.remove("G");
numberC.remove("H");
numberC.remove("T");
}
if(numberC.size()>=3&&numberC.contains("O")){ //字母O为1排除0,2,4,6,8后独占
sb.append("3"); //3+8 =11,取个位1,是最小的那个数字
numberC.remove("O");
numberC.remove("N");
numberC.remove("E");
}
if(numberC.size()>=5&&numberC.contains("H")){ //字母H为3排除0,2,4,6,8后独占
sb.append("5"); //3+8 =11,取个位1,是最小的那个数字
numberC.remove("T");
numberC.remove("H");
numberC.remove("R");
numberC.remove("E");
numberC.remove("E");
}
if(numberC.size()>=4&&numberC.contains("F")){ //字母F为5排除0,2,4,6,8后独占
sb.append("7"); //7+8 =15,取个位5,是最小的那个数字
numberC.remove("F");
numberC.remove("I");
numberC.remove("V");
numberC.remove("E");
}
if(numberC.size()>=5&&numberC.contains("S")){ //字母F为7排除0,2,4,6,8后独占
sb.append("9"); //9+8 =17,取个位7,是最小的那个数字
numberC.remove("S");
numberC.remove("E");
numberC.remove("V");
numberC.remove("E");
numberC.remove("N");
}
if(numberC.size()>=4&&numberC.contains("I")){ //字母F为7排除0,2,4,6,8后独占
sb.append("1"); //1+8 =9,取个位9,是最小的那个数字
numberC.remove("N");
numberC.remove("I");
numberC.remove("N");
numberC.remove("E");
} String strN = sb.toString();
char[] cr = strN.toCharArray();
Arrays.sort(cr);
String result = String.valueOf(cr); System.out.println(result);
} }
小米2017秋招真题——电话号码分身问题(Java版)的更多相关文章
- ACM-ICPC(10 / 10)——(完美世界2017秋招真题)
今天学了莫比乌斯反演,竟然破天荒的自己推出来了一个题目!有关莫比乌斯反演的题解,和上次的01分数规划的题解明天再写吧~~~ 学长们都在刷面试题,我也去试了试,120分钟,写出6题要有一点熟练度才行.先 ...
- 第K个幸运数(京东2017秋招真题)
题目 4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字.前几个幸运数字为:4,7,44,47,74,77,444,447... 现在输入一个数字K,输出第K个幸 ...
- 算法是什么我记不住,But i do it my way. 解一道滴滴出行秋招编程题。
只因在今日头条刷到一篇文章,我就这样伤害我自己,手贱. 刷头条看到一篇文章写的滴滴出行2017秋招编程题,后来发现原文在这里http://www.cnblogs.com/SHERO-Vae/p/588 ...
- Leetcode - 剑指offer 面试题29:数组中出现次数超过一半的数字及其变形(腾讯2015秋招 编程题4)
剑指offer 面试题29:数组中出现次数超过一半的数字 提交网址: http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163 ...
- 美团点评2017校招笔试真题-算法工程师A
美团点评2017校招笔试真题-算法工程师A 1.下面哪种STL容器的实现和其它三个不一样 A. set B. deque C. multimap D. map 正确答案: B STL的容器可以分为以下 ...
- 美团点评2017校招笔试真题-算法工程师B
美团点评2017校招笔试真题-算法工程师B 1.以下关于经典的k-means聚类的说法哪个是错误的? A:k-means聚类算法是全局收敛的 B:k-means的聚类结果和初始聚类中心点的选取有关 C ...
- 考试必备神器-真题园手机客户端Android版1.1正式上线啦,欢迎大家下载使用!
真题园-考试必备神器,爱学习,找真题! 真题园-考试必备神器,爱学习,找真题!1.真题园android客户端1.1版全新发布上线.2.最新教育资讯实时更新,了解行业动态新闻.3.最新最全的真题大全,最 ...
- 2017微软秋招A题
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 There is an integer array A1, A2 ...AN. Each round you may ch ...
- 【BFS + Hash】拼图——携程2017春招编程题2
写在前面 前天参加了携程的网测--还是感觉自己太!渣!了! _(:з」∠)_ 时光匆匆啊,已经到了开始思考人生的时候了(算了不矫情了)--总之写个博客来督促一下自己.之前太懒了,很多时候都是输在 ...
随机推荐
- Java-break,continue,return用法
当年的我也算是基础小王子,但是长时间的不用导致我与他们越来越陌生了,所以我要把他们记在我的本本上. 首先我们要明白,java中到底有多少个循环关键字? 答:没错,就是3个,他们分别是:for(初始值: ...
- ASP.Net Core Razor 页面路由
在服务器端 Web 应用程序框架中,其中非常重要的设计是开发人员如何将URL与服务器上的资源进行匹配,以便正确的处理请求.最简单的方法是将 URL 映射到磁盘上的物理文件,在 Razor 页面框架中, ...
- myeclipse eclipse创建maven web项目时 index.jsp报错
第一种办法 解决办法: ---------------------------------------------------------------------------------------- ...
- mysql 用多次查询代替一次复杂join查询的优点分析
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt344 多高性能的应用都会对关联查询进行分解.简单地,可以对每一个表进行一次单 ...
- oracle数据块核心剖析
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp57 数据块(Oracle Data Blocks),本文简称为" ...
- C#后台调用浏览器打开下载连接地址的三种方法
一.从注册表中读取到本地计算机默认浏览器,然后调用下载. private void button1_Click(object sender, EventArgs e) { //从注册表 ...
- NHibernate教程(12)--延迟加载
本节内容 引入 延迟加载 实例分析 1.一对多关系实例 2.多对多关系实例 结语 引入 通过前面文章的分析,我们知道了如何使用NHibernate,比如CRUD操作.事务.一对多.多对多映射等问题,这 ...
- web程序员标准环境之DreamWeaver【…
Adobe Dreamweaver,简称"DW",中文名称 "梦想编织者",是美国MACROMEDIA公司开发的集网页制作和管理网站于一身的所见即所得网页编辑器 ...
- 【Beta】Daily Scrum Meeting——Day3
站立式会议照片 1.本次会议为第三次Meeting会议: 2.本次会议在早上9:40,在陆大实验室召开,本次会议为25分钟讨论今天要完成的任务以及接下来的任务安排. 燃尽图 每个人的工作分配 遇到的困 ...
- 201521123082《Java程序设计》第3周学习总结
201521123082<Java程序设计>第3周学习总结 标签(空格分隔): Java 1.本周学习总结 XMind图: 2.书面作业 Q1.代码阅读 public class Test ...