华为机试_字符串识别_Vector的使用;
第一题:拼音转数字
输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:
描述: 拼音 yi er san si wu liu qi ba jiu
阿拉伯数字 1 2 3 4 5 6 7 8 9
输入字符只包含小写字母,所有字符都可以正好匹配
运行时间限制:无限制
内存限制: 无限制
输入: 一行字符串,长度小于1000
输出: 一行字符(数字)串
样例输入: yiersansi
样例输出: 1234
总结几个用法:
1、区别char、String、Vector<>str; 字符‘’ 字符串“” 向量<>中是向量存的数据类型(动态存储)
2、最后打印的内容只能是char、String格式的,所以return的时候加上这句str.toString()表示将向量转换成String型;还有str.toArray转换成数组;
package t0806; import java.util.Vector; public class test2 { public static void main(String[] args){ String str = "yiersansi"; String str2 = solve(str); System.out.println("样本输出为:"+str2); } public static String solve(String str2){ Vector<String> str3=new Vector<String>(); //new一个空的字符串型的向量 char ch[]=str2.toCharArray(); //将字符串转换成字符数组 int length=str2.length(); int k=0; while(true){ // 习惯使用这种while。break放在内部,而不是放在括号里面,除非你非常清楚它的运行机制 if (ch[k]=='y'&&ch[k+1]=='i') {str3.addElement("1");k=k+2;} else if(ch[k]=='e'&&ch[k+1]=='r') {str3.addElement("2");k=k+2;} else if(ch[k]=='s') { if (ch[k+1]=='a'&&ch[k+2]=='n') {str3.addElement("3");k=k+3;} else if(ch[k+1]=='i') {str3.addElement("4");k=k+2;} } else if(ch[k]=='w'&&ch[k+1]=='u') {str3.addElement("5");k=k+2;} else if(ch[k]=='l'&&ch[k+1]=='i'&&ch[k+2]=='u') {str3.addElement("6");k=k+3;} else if(ch[k]=='q'&&ch[k+1]=='i') {str3.addElement("7");k=k+2;} else if(ch[k]=='b'&&ch[k+1]=='a') {str3.addElement("8");k=k+2;} else if(ch[k]=='j'&&ch[k+1]=='i'&&ch[k+2]=='u') {str3.addElement("9");k=k+3;} if (k>=length) //一旦超过 break; } return str3.toString(); // 将向量转成String形式的 } }
版本二:
增加手动输入字符串,enter按键输出结果:
package t0806; import java.util.Scanner; import java.util.Vector; public class test2 { static String ss; public static void main(String[] args){ System.out.println("请输入字符串:"); Scanner scStr = new Scanner(System.in); ss = scStr.next(); //String str = "yiersansi"; String str2 = solve(ss); System.out.println("样本输出为:"+str2); } public static String solve(String str2){ Vector<String> str3=new Vector<String>(); char ch[]=str2.toCharArray(); int length=str2.length(); int k=0; while(true){ if (ch[k]=='y'&&ch[k+1]=='i') {str3.addElement("1");k=k+2;} else if(ch[k]=='e'&&ch[k+1]=='r') {str3.addElement("2");k=k+2;} else if(ch[k]=='s') { if (ch[k+1]=='a'&&ch[k+2]=='n') {str3.addElement("3");k=k+3;} else if(ch[k+1]=='i') {str3.addElement("4");k=k+2;} } else if(ch[k]=='w'&&ch[k+1]=='u') {str3.addElement("5");k=k+2;} else if(ch[k]=='l'&&ch[k+1]=='i'&&ch[k+2]=='u') {str3.addElement("6");k=k+3;} else if(ch[k]=='q'&&ch[k+1]=='i') {str3.addElement("7");k=k+2;} else if(ch[k]=='b'&&ch[k+1]=='a') {str3.addElement("8");k=k+2;} else if(ch[k]=='j'&&ch[k+1]=='i'&&ch[k+2]=='u') {str3.addElement("9");k=k+3;} if (k>=length) //一旦超过 break; } return str3.toString(); } }
每天都做更好的自己,不纠结于输赢成败