华为机试_字符串识别_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();
    }

}
View Code

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值