電話號碼分身(java小米校招17)__演算法

來源:互聯網
上載者:User

1、題目:

題目描述 繼MIUI8推出手機分身功能之後,MIUI9計劃推出一個電話號碼分身的功能:首先將電話號碼中的每個數字加上8取個位,然後使用對應的大寫字母代替 ("ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"), 然後隨機打亂這些字母,所產生的字串即為電話號碼對應的分身。 輸入描述:

第一行是一個整數T(1 ≤ T ≤ 100)表示測試範例數;接下來T行,每行給定一個分身後的電話號碼的分身(長度在3到10000之間)。
輸出描述:
輸出T行,分別對應輸入中每行字串對應的分身前的最小電話號碼(允許前置0)。
樣本1 輸入
4EIGHTZEROTWOONEOHWETENRTEOOHEWTIEGTHENRTEO
輸出
02343450345


2、分析:通過分析各個單詞的每個字元,依次找出第一組,第二組...,每一組的每個單詞都能有一個字元和其他單詞不一樣,從而確定一個單詞的存在,然後刪除這個單詞,每刪除一次就對此單詞出現次數+1,表示這個單詞的出現次數,為後面輸出結果做鋪墊。

注意:找出各個組是有序的


3、code:已a

package schooloffer17;import java.util.Arrays;import java.util.Scanner;/** * @Author: cxh * @CreateTime: 17/12/2 10:01 * @ProjectName: JavaBaseTest * <電話號碼分身></> */public class PhoneNumDevide {    public static void main(String[] args) {        Scanner scanner=new Scanner(System.in);        int n;        n=Integer.valueOf(scanner.nextLine().trim());//n個測試案例        int[] record=new int[10];        for(int i=0;i<n;i++){            String str=scanner.nextLine().trim().toLowerCase();            Arrays.fill(record,0);//記錄各個數字出現次數            StringBuilder sb=new StringBuilder(str);            //階段1            //two->4            while (sb.indexOf("w")!=-1){                sb.deleteCharAt(sb.indexOf("t"));                sb.deleteCharAt(sb.indexOf("w"));                sb.deleteCharAt(sb.indexOf("o"));                record[4]++;            }            //six->8            while (sb.indexOf("x")!=-1){                sb.deleteCharAt(sb.indexOf("s"));                sb.deleteCharAt(sb.indexOf("i"));                sb.deleteCharAt(sb.indexOf("x"));                record[8]++;            }            //eight->0            while (sb.indexOf("g")!=-1){                sb.deleteCharAt(sb.indexOf("e"));                sb.deleteCharAt(sb.indexOf("i"));                sb.deleteCharAt(sb.indexOf("g"));                sb.deleteCharAt(sb.indexOf("h"));                sb.deleteCharAt(sb.indexOf("t"));                record[0]++;            }            //zero->2            while (sb.indexOf("z")!=-1){                sb.deleteCharAt(sb.indexOf("z"));                sb.deleteCharAt(sb.indexOf("e"));                sb.deleteCharAt(sb.indexOf("r"));                sb.deleteCharAt(sb.indexOf("o"));                record[2]++;            }            //階段2            //three->5            while (sb.indexOf("h")!=-1){                sb.deleteCharAt(sb.indexOf("t"));                sb.deleteCharAt(sb.indexOf("h"));                sb.deleteCharAt(sb.indexOf("r"));                sb.deleteCharAt(sb.indexOf("e"));                sb.deleteCharAt(sb.indexOf("e"));                record[5]++;            }            //four->6            while (sb.indexOf("u")!=-1){                sb.deleteCharAt(sb.indexOf("f"));                sb.deleteCharAt(sb.indexOf("o"));                sb.deleteCharAt(sb.indexOf("u"));                sb.deleteCharAt(sb.indexOf("r"));                record[6]++;            }            //seven->9            while (sb.indexOf("s")!=-1){                sb.deleteCharAt(sb.indexOf("s"));                sb.deleteCharAt(sb.indexOf("e"));                sb.deleteCharAt(sb.indexOf("v"));                sb.deleteCharAt(sb.indexOf("e"));                sb.deleteCharAt(sb.indexOf("n"));                record[9]++;            }            //階段3            //five->7            while (sb.indexOf("f")!=-1){                sb.deleteCharAt(sb.indexOf("f"));                sb.deleteCharAt(sb.indexOf("i"));                sb.deleteCharAt(sb.indexOf("v"));                sb.deleteCharAt(sb.indexOf("e"));                record[7]++;            }            //階段4            //nine->1            while (sb.indexOf("i")!=-1){                sb.deleteCharAt(sb.indexOf("n"));                sb.deleteCharAt(sb.indexOf("i"));                sb.deleteCharAt(sb.indexOf("n"));                sb.deleteCharAt(sb.indexOf("e"));                record[1]++;            }            //階段5            //one->3            while (sb.indexOf("e")!=-1){                sb.deleteCharAt(sb.indexOf("o"));                sb.deleteCharAt(sb.indexOf("n"));                sb.deleteCharAt(sb.indexOf("e"));                record[3]++;            }            for(int j=0;j<10;j++){                for(int k=0;k<record[j];k++){                    sb.append(j);                }            }            System.out.println(sb.toString());        }    }}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.