原题描述如下:

通过对各个数字对应的英文单词的分析,可以发现一些规律:

字母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版)的更多相关文章

  1. ACM-ICPC(10 / 10)——(完美世界2017秋招真题)

    今天学了莫比乌斯反演,竟然破天荒的自己推出来了一个题目!有关莫比乌斯反演的题解,和上次的01分数规划的题解明天再写吧~~~ 学长们都在刷面试题,我也去试了试,120分钟,写出6题要有一点熟练度才行.先 ...

  2. 第K个幸运数(京东2017秋招真题)

    题目 4和7是两个幸运数字,我们定义,十进制表示中,每一位只有4和7两个数的正整数都是幸运数字.前几个幸运数字为:4,7,44,47,74,77,444,447... 现在输入一个数字K,输出第K个幸 ...

  3. 算法是什么我记不住,But i do it my way. 解一道滴滴出行秋招编程题。

    只因在今日头条刷到一篇文章,我就这样伤害我自己,手贱. 刷头条看到一篇文章写的滴滴出行2017秋招编程题,后来发现原文在这里http://www.cnblogs.com/SHERO-Vae/p/588 ...

  4. Leetcode - 剑指offer 面试题29:数组中出现次数超过一半的数字及其变形(腾讯2015秋招 编程题4)

    剑指offer 面试题29:数组中出现次数超过一半的数字 提交网址: http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163 ...

  5. 美团点评2017校招笔试真题-算法工程师A

    美团点评2017校招笔试真题-算法工程师A 1.下面哪种STL容器的实现和其它三个不一样 A. set B. deque C. multimap D. map 正确答案: B STL的容器可以分为以下 ...

  6. 美团点评2017校招笔试真题-算法工程师B

    美团点评2017校招笔试真题-算法工程师B 1.以下关于经典的k-means聚类的说法哪个是错误的? A:k-means聚类算法是全局收敛的 B:k-means的聚类结果和初始聚类中心点的选取有关 C ...

  7. 考试必备神器-真题园手机客户端Android版1.1正式上线啦,欢迎大家下载使用!

    真题园-考试必备神器,爱学习,找真题! 真题园-考试必备神器,爱学习,找真题!1.真题园android客户端1.1版全新发布上线.2.最新教育资讯实时更新,了解行业动态新闻.3.最新最全的真题大全,最 ...

  8. 2017微软秋招A题

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 There is an integer array A1, A2 ...AN. Each round you may ch ...

  9. 【BFS + Hash】拼图——携程2017春招编程题2

    写在前面 前天参加了携程的网测--还是感觉自己太!渣!了!    _(:з」∠)_ 时光匆匆啊,已经到了开始思考人生的时候了(算了不矫情了)--总之写个博客来督促一下自己.之前太懒了,很多时候都是输在 ...

随机推荐

  1. Csocket基本原理

    我通过几个采用 CSocket 类编写并基于 Client/Server (客户端 / 服务端)的网络聊天和传输文件的程式  ,在调试这些程式的过程中,追踪深入至 CSocket 类核心源码 Sock ...

  2. Python3调用企业微信用于告警

    前段时间利用py爬虫抓取一些网页信息,然后通过wxpy发送到微信群,以用作日常告警,感觉还是很方便. 但好景不长,我的小号微信被腾讯封了(很常见咯), 显示无法登录网页版微信,至今已经有半个多月了. ...

  3. 分布式memcached-虚拟节点

    1.通过memcached服务器下的不同端口来达到模拟多台服务器的效果 2.假设现在有三台memcached服务器,本地分别使用11211,11212,11213三个端口来模拟 ①打开端口 ②连接端口 ...

  4. django源码解析一(请求处理流程)

    1.我们都知道WSGI是一个规范,规范了server和application之间通信的一些约束,server端在监听到请求之后,会把请求转给application去处理,他们之间关联起来的桥梁是一个e ...

  5. 数据库学习任务一:使用vs2010建立数据库

    数据库应用程序的开发流程一般主要分为以下几个步骤: 创建数据库 使用Connection对象连接数据库 使用Command对象对数据源执行SQL命令并返回数据 使用DataReader和DataSet ...

  6. ★电车难题的n个坑爹变种

    哲学家都不会做的电车难题变异 此题会答清华北大 "电车难题(Trolley Problem)"是伦理学领域最为知名的思想实验之一,其内容大致是: 一个疯子把五个无辜的人绑在电车轨道 ...

  7. HTML5 javascript 音乐 音频

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  8. 201521123059 《Java程序设计》第七周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: XMind 2. 书面作业 Q1: ArrayList代码分析 1.1 解释ArrayList的contains ...

  9. 201521123027 《JAVA程序设计》第一周学习总结

    一.本周学习总结 经过第一周的JAVA学习,初步学习到下列重点知识: 1.JAVA SE的主要部分:JVM.JRE.JDK.与JAVA语言: 2.JAVA虚拟机实验跨平台运行JAVA程序: 3.JAV ...

  10. JAVA课程设计个人博客 学生基本信息管理 201521123117 李心宇

    1. 团队课程设计博客链接 http://www.cnblogs.com/ll321/p/7067598.html 2.个人负责模块或任务说明 ①主要有三个界面的设计,包括:登录界面,功能选择界面还有 ...