小米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
写在前面 前天参加了携程的网测--还是感觉自己太!渣!了! _(:з」∠)_ 时光匆匆啊,已经到了开始思考人生的时候了(算了不矫情了)--总之写个博客来督促一下自己.之前太懒了,很多时候都是输在 ...
随机推荐
- HTTPS 证书配置
HTTPS 证书配置 现在阿里云和腾讯云都支持申请 HTTPS 证书,这里不再提,有需要的可自行google解决方案. 本文主要介绍的是通过 letsencrypt 申请免费的HTTPS证书,并将其配 ...
- CSS中的路径裁剪样式clip-path
前面的话 CSS借鉴了SVG裁剪的概念,设置了clip-path样式,本文将详细介绍路径裁剪clip-path 概述 clip-path属性可以防止部分元素通过定义的剪切区域来显示,仅通过显示的特殊区 ...
- docker的简单搭建(java/tomcat 环境)
1.一副图简单了解下docker的布局,它是虚拟的,docker分为私服.镜像.容器三个模块 一般从私服pull镜像,镜像run一个容器,我们把容器作为一个虚拟服务,里面可以独立运行进程有独立的内网I ...
- ORACLE分区表、分区索引详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt160 ORACLE分区表.分区索引ORACLE对于分区表方式其实就是将表分段 ...
- Centos7 & Docker & Jenkins & ASP.NET Core 2.0 自动化发布和部署
写在前面 Docker一直很火热,一直想把原本的Jenkins自动部署工具搬到Docker上面,无奈今年一直忙于各种事情,迟迟未实施这个事情,正好迎来了dotnet core 2.0 的正式发布,升级 ...
- 团队作业八—第二次团队冲刺(Beta版本) 第 1 天
一.每个人的工作 (1) 昨天已完成的工作 由于是才刚开始冲刺,所以没有昨天的工作 (2) 今天计划完成的工作: 对界面的优化和一些细节的完善 (3) 工作中遇到的困难: 工作中出现了意见不一的情况 ...
- 201521123004《Java程序设计》第8周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 答:主要以泛型为主 //简单的泛型类的定义,T为类型参数 public ...
- 201521123098 《Java程序设计》 第5周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 1. 对接口这一定义有了初步的了解: 2. 学习了如何定义实现类和如何实现一些接 ...
- 201521123087 《Java程序设计》第5周学习总结
1. 本周学习总结 2. 书面作业 作业参考文件下载 代码阅读:Child压缩包内源代码1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结 ...
- Java课程设计-学生基本信息管理 201521123036
团队课程设计博客链接 团队博客链接 个人负责模块或任务说明 个人负责模块 任务说明 用户登录,注册 登录,注册,判断用户是否存在,添加用户 学生信息管理菜单 按钮,跳转相应界面,退出程序 学生信息添加 ...