小米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
写在前面 前天参加了携程的网测--还是感觉自己太!渣!了! _(:з」∠)_ 时光匆匆啊,已经到了开始思考人生的时候了(算了不矫情了)--总之写个博客来督促一下自己.之前太懒了,很多时候都是输在 ...
随机推荐
- 201671010133 2016-2017-2 《java程序设计》 初学java!
新学期伊始,我心中既充满了期待和希望,又有些许激动和感慨.期待的是即将接触许多新的知识,期待未来比过去过的更加踏实有趣,期待遇到更好的人和事等等.当然,面对从未了解过的新事物时,我想每个人的想法都大致 ...
- C++中关于重载默认构造函数与默认全部参数的构造函数的使用注意
# include<iostream>using namespace std;class Time{public: //公用成员函数 ...
- zookeeper简单介绍
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt193 ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系 ...
- Kafka Streams 剖析
1.概述 Kafka Streams 是一个用来处理流式数据的库,属于Java类库,它并不是一个流处理框架,和Storm,Spark Streaming这类流处理框架是明显不一样的.那这样一个库是做什 ...
- [js高手之路]Vue2.0基于vue-cli+webpack同级组件之间的通信教程
我们接着上文继续,本文我们讲解兄弟组件的通信,项目结构还是跟上文一样. 在src/assets目录下建立文件EventHandler.js,该文件的作用在于给同级组件之间传递事件 EventHandl ...
- NHibernate学习教程(6)--事务Transactions
本节内容 事务概述 1.新建对象 [测试成功提交] [测试失败回滚] 2.删除对象 3.更新对象 4.保存更新对象 结语 上一篇我们介绍了NHibernate中的Insert, Update, De ...
- Java课设--俄罗斯方块Tetris
Java程序设计课程作业报告 作业:俄罗斯方块游戏 姓名 赵璐媛 学号 程序得分 90% 作业报告 得分10% 实验总分 100% 作业目的: 掌握基本的图形程序设计方法 掌握Java事件处理程序编写 ...
- FormData 上传多种格式的文件
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 201521123107 《Java程序设计》第5周学习总结
第5周作业-继承.多态.抽象类与接口 1.本周学习总结 2.书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改 ...
- 【Alpha】Daily Scrum Meeting——Day6
站立式会议照片 1.本次会议为第五次Meeting会议: 2.本次会议在上午大课间09:40,在禹州楼召开,本次会议为30分钟讨论昨天的任务完成情况以及接下来的任务安排. 燃尽图 每个人的工作分配 成 ...