• 小米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版)

      1 import java.util.ArrayList;
      2 import java.util.Arrays;
      3 import java.util.List;
      4 import java.util.Scanner;
      5 
      6 public class MiNumber {
      7 
      8     public static void main(String[] args) {
      9         Scanner in = new Scanner(System.in);
     10         int n = in.nextInt();
     11         String[] arr = new String[n];
     12         in.nextLine();  //先调用一次nextLine(),将该行剩下的内容抛弃
     13         for(int i=0;i<n;i++)
     14             arr[i] = in.nextLine();
     15         
     16         getResult(n,arr);
     17         in.close();
     18     }
     19     
     20     public static void getResult(int n,String[] arr){
     21         for(int i=0;i<n;i++){
     22             List<String> numberC = new ArrayList<String>(arr[i].length());
     23             for(int j=0;j<arr[i].length();j++)
     24                 numberC.add(arr[i].charAt(j)+"");
     25             getNumber(numberC);
     26             numberC = null;
     27         }
     28     }
     29     
     30     public static void getNumber(List<String> numberC){
     31         StringBuilder sb = new StringBuilder();
     32         if(numberC.size()>=4&&numberC.contains("Z")){  //字母Z为0独占
     33             sb.append("2");  //2+8 =10,取个位0,是最小的那个数字
     34             numberC.remove("Z");
     35             numberC.remove("E");
     36             numberC.remove("R");
     37             numberC.remove("O");
     38         }
     39         if(numberC.size()>=3&&numberC.contains("W")){  //字母W为2独占
     40             sb.append("4");  //4+8 =12,取个位2,是最小的那个数字
     41             numberC.remove("T");
     42             numberC.remove("W");
     43             numberC.remove("O");
     44         }
     45         if(numberC.size()>=4&&numberC.contains("U")){  //字母U为4独占
     46             sb.append("6");  //6+8 =14,取个位4,是最小的那个数字
     47             numberC.remove("F");
     48             numberC.remove("O");
     49             numberC.remove("U");
     50             numberC.remove("R");
     51         }
     52         if(numberC.size()>=3&&numberC.contains("X")){  //字母X为6独占
     53             sb.append("8");  //8+8 =16,取个位6,是最小的那个数字
     54             numberC.remove("S");
     55             numberC.remove("I");
     56             numberC.remove("X");
     57         }
     58         if(numberC.size()>=5&&numberC.contains("G")){  //字母G为8独占
     59             sb.append("0");  //0+8 =8,取个位8,是最小的那个数字
     60             numberC.remove("E");
     61             numberC.remove("I");
     62             numberC.remove("G");
     63             numberC.remove("H");
     64             numberC.remove("T");
     65         }
     66         if(numberC.size()>=3&&numberC.contains("O")){  //字母O为1排除0,2,4,6,8后独占
     67             sb.append("3");  //3+8 =11,取个位1,是最小的那个数字
     68             numberC.remove("O");
     69             numberC.remove("N");
     70             numberC.remove("E");
     71         }
     72         if(numberC.size()>=5&&numberC.contains("H")){  //字母H为3排除0,2,4,6,8后独占
     73             sb.append("5");  //3+8 =11,取个位1,是最小的那个数字
     74             numberC.remove("T");
     75             numberC.remove("H");
     76             numberC.remove("R");
     77             numberC.remove("E");
     78             numberC.remove("E");
     79         }
     80         if(numberC.size()>=4&&numberC.contains("F")){  //字母F为5排除0,2,4,6,8后独占
     81             sb.append("7");  //7+8 =15,取个位5,是最小的那个数字
     82             numberC.remove("F");
     83             numberC.remove("I");
     84             numberC.remove("V");
     85             numberC.remove("E");
     86         }
     87         if(numberC.size()>=5&&numberC.contains("S")){  //字母F为7排除0,2,4,6,8后独占
     88             sb.append("9");  //9+8 =17,取个位7,是最小的那个数字
     89             numberC.remove("S");
     90             numberC.remove("E");
     91             numberC.remove("V");
     92             numberC.remove("E");
     93             numberC.remove("N");
     94         }
     95         if(numberC.size()>=4&&numberC.contains("I")){  //字母F为7排除0,2,4,6,8后独占
     96             sb.append("1");  //1+8 =9,取个位9,是最小的那个数字
     97             numberC.remove("N");
     98             numberC.remove("I");
     99             numberC.remove("N");
    100             numberC.remove("E");
    101         }
    102         
    103         String strN = sb.toString();
    104         char[] cr = strN.toCharArray();
    105         Arrays.sort(cr);
    106         String result = String.valueOf(cr);
    107         
    108         System.out.println(result);
    109     }
    110 
    111 }
  • 相关阅读:
    D
    NOI 1.7编程基础之字符串(35题)
    HYSBZ 2145 悄悄话
    POJ 2406 Power Strings
    POJ 3461 Oulipo[附KMP算法详细流程讲解]
    POJ 3974 Palindrome
    POJ 1002 487-3279
    POJ 1182 食物链
    POJ 2524 Ubiquitous Religions
    HDU 1251 统计难题
  • 原文地址:https://www.cnblogs.com/JiaJoa/p/7622109.html
Copyright © 2020-2023  润新知