來自華爲
請您編寫一個拼音與英文轉換的函數,如果輸入的電話號碼是英文單詞,輸出對應的電話號碼的中文拼音,如果輸入的電話號碼是中文拼音,輸出對應的電話號碼的英文單詞。例如,輸入“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();
}
}