編程測試題-電話號碼的英文表示和中文表示轉換

來自華爲


請您編寫一個拼音與英文轉換的函數,如果輸入的電話號碼是英文單詞,輸出對應的電話號碼的中文拼音,如果輸入的電話號碼是中文拼音,輸出對應的電話號碼的英文單詞。例如,輸入“OneZeroDoubleThree”,則輸出YiLingSanSan。拼音、英文讀法見下表:
Yi Er San Si Wu Liu Qi Ba Jiu Ling
One Two Three Four Five Six Seven Eight Nine Zero
注意:
1、 每個單詞均爲首字母大寫,遇到連續兩個相同數字,輸入可以前面加Double,輸出不可以加Double。
輸入描述:
由首字母大寫組成的字符串,表示一個電話號碼的英文單詞或者中文讀法。字符輸入範圍爲數字 0、1、2、3、4、5、6、7、8、9的英文單詞或者中文拼音。
輸出描述:
輸出:
根據輸入的,輸出對應的電話號碼字符串。如果輸入的電話號碼是英文單詞,輸出對應的電話號碼的中文拼音;如果輸入的電話號碼是中文拼音,輸出對應的電話號碼的英文單詞。若輸入非法,輸出字符串“ERROR”。

注意:最終交付的函數代碼中不要向控制檯打印輸出無關任何信息。
示例1
輸入

OneTwoThreeFourFiveSixSevenEightNineZero
輸出

YiErSanSiWuLiuQiBaJiuLing
收起答題卡


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

public class ChineseToEnglish {

    public static void main(String[] args) {
//      String str1 = "Ling Yi Er San";
//      String str2 ="Zero One Two Three";
//      String[] chi = {"Ling", "One", "Er", "San", "Si", "Wu", "Liu", "Qi", "Ba", "Jiu"};
//      String[] eng = {"One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};

        Scanner input = new Scanner(System.in);
        String src = ""; String target = "";
        while(input.hasNextLine()){
            src = input.nextLine();
            target = translate(src);
        }

    }

    public static String translate(String str){
        String[] chi = {"Ling", "Yi", "Er", "San", "Si", "Wu", "Liu", "Qi", "Ba", "Jiu"};
        String[] eng = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"};
        Map<String, Integer> chiMap = new HashMap<String, Integer>();
        Map<String, Integer> engMap = new HashMap<String, Integer>();
        int flag =-1; String[] des = new String[str.length()];

        for(int i = 0; i<chi.length; i++){
            chiMap.put(chi[i], i);
            engMap.put(eng[i], i);
        }

        if("".equals(str)||str==null||str.isEmpty()){
            System.out.println("ERROR");
            return "";
        }
        for(int i = 0 ; i<str.length(); i++){
            if(" ".equals(str.charAt(i))||"".equals(str.charAt(i))){
                System.out.println("ERROR");
                return "";
            }

        }

        String[] src = str.split(" ");
        if(chiMap.keySet().contains(src[0])){
            flag = 0;//Ping Yin
        }else{
            flag = 1;//English
        }

        if(flag == 1){
            for(int i = 0; i<src.length; i++){
                if("Double".equals(src[i]))
                    src[i] = src[i+1];
            }
            for(int i = 0; i<src.length; i++){
                int idx = engMap.get(src[i]);
                des[i] = chi[idx];
            }
        }
        else{
            for(int i = 0; i<src.length; i++){
                int index = chiMap.get(src[i]);
                des[i] = eng[index];
            }
        }
        //String[] des;
        List<String> target = new ArrayList<String>();
        StringBuffer sb = new StringBuffer();
        for(int i = 0 ; i< des.length; i++){
            if(des[i]!=null)
            //target.add(des[i]);
                sb.append(des[i]);

        }
        System.out.println(sb.toString());
        //System.out.println(Arrays.toString(target.toArray()));
        System.out.println(sb);
        return sb.toString();
    }

}
發佈了142 篇原創文章 · 獲贊 34 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章