java实战字符串2:中英字符串相互转换
题目描述
- 输入字符串为中文拼音号码串或者英文号码串,如果输入是中文拼音号码串则转成英文号码串,如果输入是英文号码串则转成中文号码串。
- 特殊情况是英文号码串会出现Double + 英文数字或者拼音数值。如果是英文则可以正常转换,如果是拼音则返回“ERROR”。
解答要求时间限制:1000ms, 内存限制:256MB
输入
输入为中文拼音数字串(用例保证中文数字串均为数字拼音),或者英文数字串(可能带Double)
输出
输出为输入的 中->英 或 英->中 的转换,如果遇到double+中拼音时输出“ERROR”
样例1
输入
YiWuSanJiuSi
输出
OneFiveThreeNineFour
样例 2
输入
OneFourThreeDoubleZero
输出
YiSiSanLingLing
样例 3
输入
OneFourThreeDoubleLiu
输出
ERROR
备注:当中文转英文时,如果是LiuLiu情况需要转换成DoubleSix
解析:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | public class Main { private static String[] en = { "Zero" , "One" , "Two" , "Three" , "Four" , "Five" , "Six" , "Seven" , "Eight" , "Nine" }; private static String[] zh = { "Ling" , "Yi" , "Er" , "San" , "Si" , "Wu" , "Liu" , "Qi" , "Ba" , "Jiu" }; private static List<String> enArr = Arrays.asList(en); // 这种方式的转的list不能执行追加的操作,否则会抛异常,只用于找下标 private static List<String> zhArr = Arrays.asList(zh); public static void main(String[] args) { Scanner sc = new Scanner(System.in); ArrayList<String> arr = strToArr(sc.nextLine()); // 判断是英文转中文还是中文转英文 boolean flag = true ; for (String s : arr) { if (zhArr.contains(s)) { flag = false ; break ; } } if (flag) { // 英转中 enToZh(arr); } else { zhToEn(arr); } } // 函数1:将一个字符串按大写首字母分割,并保存到ArrayList中 public static ArrayList<String> strToArr(String s) { ArrayList<String> arr = new ArrayList<>(); if (s.length() <= 1 ) { return arr; } int index = 0 ; for ( int i = 1 ; i < s.length(); i++) { char cha = s.charAt(i); if (cha <= 'Z' && cha >= 'A' ) { arr.add(s.substring(index, i)); index = i; } if (i == s.length() - 1 ) { arr.add(s.substring(index)); } } return arr; } // 函数2:英文转中文 public static void enToZh(ArrayList<String> arr) { StringBuffer bf = new StringBuffer(); for ( int i = 0 ; i < arr.size(); i++) { if (arr.get(i).equals( "Double" )) { if (zhArr.contains(arr.get(i + 1 ))) { System.out.println( "ERROR" ); return ; } else { int index = enArr.indexOf(arr.get(i + 1 )); bf.append(zh[index]); bf.append(zh[index]); i++; } } else { int index = enArr.indexOf(arr.get(i)); bf.append(zh[index]); } } System.out.println(bf.toString()); } // 函数3:中文转英文 public static void zhToEn(ArrayList<String> arr) { if (arr.contains( "Double" )) { System.out.println( "ERROR" ); return ; } StringBuffer bf = new StringBuffer(); for ( int i = 0 ; i < arr.size(); i++) { String cur = arr.get(i); if (i + 1 < arr.size() && arr.get(i).equals(arr.get(i + 1 ))) { bf.append( "Double" ); } else { int index = zhArr.indexOf(arr.get(i)); bf.append(en[index]); } } System.out.println(bf); } } |
本文来自博客园,作者:{Justin_Hu},转载请注明原文链接:{https://www.cnblogs.com/gchenghu/}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!