2017華為筆試題3

頭像是我愛豆發表於2017-08-30

一、拼音與英文互相轉換的函式

1.1 題目

編寫一個拼音與英文互相轉換的函式,如果輸入的電話號碼是英文單詞,輸出對應的電話號碼的中文拼音。如果輸入的電話號碼是中文拼音,輸出對應的電話號碼的英文單詞。

例如:輸入“DoubleOneTwoThreeFour”,則輸出”YiYiErSanSi“。

1.2 拼音、英文讀法表

Yi Er San Si Wu Liu Qi Ba Jiu
One Two Three Four Five Six Seven Eight Nine

  • 注意:每個單詞均為大寫字母開關,遇到連續兩個相同數字,輸入可以前面加Double,輸出不可以加Double。

1.3 輸入描述

由首字母大寫組成的字串,表示一個電話號碼的英文單詞或者中文拼音,字元輸入範圍為數字0-9的英文單詞或中文拼音。

1.4 輸出描述

根據輸入字串, 輸出對應的電話號碼字串,如果輸入的電話號碼是英文單詞,輸出對應的電話號碼的中文拼音。如果輸入的電話號碼是中文拼音,輸出對應的電話號碼的英文單詞。

1.5 重要知識點

  • 根據map的value值獲取key值
Set<String> kset = map.keySet();
String str="Yi";
for (String ks : kset) {
    if ((str.equals(map.get(ks))) {
        System.out.print(sk);
    }
}

1.6 程式碼實現

public class Main {
    public static void main(String[] args) {
        solve();
    }

    public static void solve() {
        Map map = new HashMap();
        map.put("One", "Yi");
        map.put("Two", "Er");
        map.put("Three", "San");
        map.put("Four", "Si");
        map.put("Five", "Wu");
        map.put("Six", "Liu");
        map.put("Seven", "Qi");
        map.put("Eight", "Ba");
        map.put("Nine", "Jiu");
        map.put("Zero", "Ling");
        Scanner scan = new Scanner(System.in);
        String s = scan.nextLine();
        ArrayList list = new ArrayList();
        int l = 0;
        int r = 0;
        String str = null;
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) >= 65 && s.charAt(i) <= 90) {
                str = s.substring(l, r + 1);
                if (i > 0) {
                    list.add(str);
                }
                l = i;
            } else {
                r = i;
            }
        }
        str = s.substring(l, r + 1);
        list.add(str);
        StringBuilder sb = new StringBuilder();
        Set<String> kset = map.keySet();
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).equals("Double")) {
                if(map.containsKey(list.get(i+1))){
                    sb.append(map.get(list.get(i + 1)));
                }else{
                    for (String ks : kset) {
                        if ((list.get(i+1)).equals(map.get(ks))) {
                            sb.append(ks);
                        }
                    }
                }
            } else if (map.containsKey(list.get(i))) {
                sb.append(map.get(list.get(i)));
            } else if (map.containsValue(list.get(i))) {
                for (String ks : kset) {
                    if ((list.get(i)).equals(map.get(ks))) {
                        sb.append(ks);
                    }
                }
            }
        }
        System.out.print(sb.toString());
    }
}

相關文章