编程测试题-电话号码的英文表示和中文表示转换

来自华为


请您编写一个拼音与英文转换的函数,如果输入的电话号码是英文单词,输出对应的电话号码的中文拼音,如果输入的电话号码是中文拼音,输出对应的电话号码的英文单词。例如,输入“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万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览