华为机试

it2024-08-19  38

第一题:拼音转数字输入是一个只包含拼音的字符串,请输出对应的数字序列。转换关系如下:描述:      拼音        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(); } } View Code

 

转载于:https://www.cnblogs.com/snowwhite/p/4708555.html

最新回复(0)