2017华为笔试题3

xiaoxiao2021-02-27  111

一、拼音与英文互相转换的函数

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()); } }
转载请注明原文地址: https://www.6miu.com/read-13847.html

最新回复(0)