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

xiaoxiao2021-02-28  131

来自华为


请您编写一个拼音与英文转换的函数,如果输入的电话号码是英文单词,输出对应的电话号码的中文拼音,如果输入的电话号码是中文拼音,输出对应的电话号码的英文单词。例如,输入“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(); } }
转载请注明原文地址: https://www.6miu.com/read-17458.html

最新回复(0)