小米2017秋招真題——電話號碼分身問題(Java版)

來源:互聯網
上載者:User

標籤:add   ring   contains   通過   問題   int   電話號碼   []   分析   

原題描述如下:

通過對各個數字對應的英文單詞的分析,可以發現一些規律:

字母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 }

 

小米2017秋招真題——電話號碼分身問題(Java版)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.