原题描述如下:

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

字母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. github+hexo搭建自己的博客网站(六)进阶配置(搜索引擎收录,优化你的url)

    详细的可以查看hexo博客的演示:https://saucxs.github.io/ 绑定了域名: http://www.chengxinsong.cn hexo+github博客网站源码(可以clo ...

  2. Maven01——简介、安装配置、入门程序、项目构建和依赖管理

    1 Maven的简介 1.1 什么是maven 是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的 Svn eclipse   maven量级 1.2 Maven好处 同 ...

  3. Singleton(单例)模式

    Singleton(单例)模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点. public class Singleton { private static Singleton ourIns ...

  4. 制作Visual Studio 2017 (VS 2017) 离线安装包

    史上功能最强大的Visual Studio 2017版本发布,但是由于版本更新速度加快和与第三方工具包集成的原因,微软研发团队没有为这个版本提供离线下载的安装文件.如果用户处在一个与外网隔离的网络环境 ...

  5. Project 3:N级魔方阵

    魔方阵:由n*n个数字所组成的n阶方阵,具有各对角线,各横列与纵行的数字和都相等的性质,称为魔方阵.而这个相等的和称为魔术数字.若填入的数字是从1到n*n,称此种魔方阵为n阶正规魔方阵. 目标:输入一 ...

  6. UX是什么?

    UX(用户体验),操作过安卓手机或者苹果手机的系统吧?那么操作过程的整体体验就叫UX,而操作过程中所看到的界面颜色啦,图案,字体大小啦等等都属于UI设计,而交互设计(Interaction Desig ...

  7. MongoDB学习之路(一)

    NoSQL简介 NoSQL(Not Only SQL),意为"不仅仅是SQL" 关系型数据库遵循ACID规则 1. A(Atomicity)原子性 指的是事务里的所有操作要么全部做 ...

  8. 结对实验---基于GUI的四则运算

    详细代码:https://git.coding.net/wangluo24/NO.2.git 结对伙伴:吕志哲(201421123021) &本人.许明涛 201421123024 一.题目要 ...

  9. 201521123006 《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 本周除了继承,我们还重点学习了多态. (1)多态性在于有相同的形态,却是不同的行为或者说是不 ...

  10. 控制结构(8) 线性化(linearization)

    // 上一篇:管道(pipeline) // 下一篇:程序计数器(PC) "编程语言不过是一个工具,什么语言都一样","编程语言能改变人的思维,不同的语言会带给你不同的思 ...