电话号码分身
題目描述
繼MIUI8推出手機分身功能之后,MIUI9計劃推出一個電話號碼分身的功能:首先將電話號碼中的每個數字加上8取個位,然后使用對應的大寫字母代替 (”ZERO”, “ONE”, “TWO”, “THREE”, “FOUR”, “FIVE”, “SIX”, “SEVEN”, “EIGHT”, “NINE”), 然后隨機打亂這些字母,所生成的字符串即為電話號碼對應的分身。
輸入描述:
第一行是一個整數T(1 ≤ T ≤ 100)表示測試樣例數;接下來T行,每行給定一個分身后的電話號碼的分身(長度在3到10000之間)。
輸出描述:
輸出T行,分別對應輸入中每行字符串對應的分身前的最小電話號碼(允許前導0)。
示例:
輸入
4 EIGHT ZEROTWOONE OHWETENRTEO OHEWTIEGTHENRTEO輸出
0 234 345 0345參考:
傳送門
個人答題代碼:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner;/*** Created by handsome programmer.* User: chen* Date: 2018/1/14* Time: 12:21* Description:*/ public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = scanner.nextInt();String[] array = new String[N];for (int i = 0; i < N; i++) {array[i] = scanner.next();}for (int i = 0; i < N; i++) {getNum(array[i]);}}/*** 對應輸入中每行字符串對應的分身前的最小電話號碼(允許前導0)** @param message*/public static void getNum(String message) {//統計字符串中的各個字母數量char[] chars = new char[26];int length = message.length();for (int i = 0; i < length; i++) {int c = message.charAt(i) - 'A';chars[c]++;}//各個數字的數量int[] nums = new int[10];//EIGHT獨有G,如果有G就刪除EIGHT,并且記錄0的個數int G = chars[6];if (G > 0) {//刪除EIGHTchars[4] -= G;chars[8] -= G;chars[6] -= G;chars[7] -= G;chars[19] -= G;nums[0] += G;}//ZERO獨有Z,如果有Z,就刪除ZERO,并記錄2的個數int Z = chars[25];if (Z > 0) {//刪除ZEROchars[25] -= Z;chars[4] -= Z;chars[17] -= Z;chars[14] -= Z;//記錄2的個數nums[2] += Z;}//TWO獨有W,如果有W,就刪除所有的TWO,并且記錄4的個數int W = chars[22];if (W > 0) {//刪除TWOchars[19] -= W;chars[22] -= W;chars[14] -= W;//記錄4的個數nums[4] += W;}//FOUR 獨有U,如果有U,就刪除FOUR,并記錄6的個數int U = chars[20];if (U > 0) {//刪除FOURchars[5] -= U;chars[14] -= U;chars[20] -= U;chars[17] -= U;//記錄6的個數nums[6] += U;}// SIX 獨有X,如果有X,就刪除SIX,并記錄8的個數int X = chars[23];if (X > 0) {//刪除SIXchars[18] -= X;chars[8] -= X;chars[23] -= X;//記錄8 的個數nums[8] += X;}//ONE 獨有O,如果有O,就刪除ONE,并記錄 3 的個數int O = chars[14];if (O > 0) {//刪除ONEchars[14] -= O;chars[13] -= O;chars[4] -= O;//記錄3的個數nums[3] += O;}//THREE 獨有T,如果有T,就刪除THREE,并且記錄5 的個數int T = chars[19];if (T > 0) {//刪除THREEchars[19] -= T;chars[7] -= T;chars[17] -= T;chars[4] -= T;chars[4] -= T;//記錄5 的個數nums[5] += T;}//FIVE 獨有F,如果有F,就刪除FIVE,并記錄7 的個數int F = chars[5];if (F > 0) {//刪除FIVEchars[5] -= F;chars[8] -= F;chars[21] -= F;chars[4] -= F;//記錄7 的個數nums[7] += F;}//NINE 獨有I,如果有I,就刪除NINE,并記錄1 的個數int I = chars[8];if (I > 0) {//刪除NINEchars[13] -= I;chars[8] -= I;chars[13] -= I;chars[4] -= I;//記錄1 的個數nums[1] += I;}//SEVEN獨有S,如果有S,就刪除SEVEN,并記錄9 的個數int S = chars[18];if (S > 0) {//刪除SEVENchars[18] -= S;chars[4] -= S;chars[21] -= S;chars[4] -= S;chars[13] -= S;//記錄9 的個數nums[9] += S;}for (int i = 0; i < 10; i++) {if (nums[i] > 0) {for (int j = 0; j < nums[i]; j++) {System.out.print(i);}}}System.out.println();} }總結
- 上一篇: 个人常用Sublime Text 插件
- 下一篇: Spring在web中的使用