算法:根据手机键盘结果将拼音字符串转换成号码串

打印结果:

zhangsan->94264726


/**

 * 电话拨号盘输入法中人的中文名字拼音能够转换成一串数字。
 * 例如:zhangsan其对应的号码:94264726
 * 电话输入法中,数字和字母的对应关系分别为:
 * 2:abc
 * 3:def
 * 4:ghi
 * 5:jkl
 * 6:mno
 * 7:qprs
 * 8:tuv
 * 9:wxyz
 * 求给出任意的英文字符串,要输出其对应的号码串。
 *
 */
package com.java.demo.algorithm;

import android.R.integer;

import java.util.HashMap;
import java.util.Map;

public class NameToPhoneNum {

    public static Map<Character, Integer> corresponding = new HashMap();

    public NameToPhoneNum() {
        initData();
    }
    
    private void initData() {
        corresponding.put('a', 2);
        corresponding.put('b', 2);
        corresponding.put('c', 2);
        corresponding.put('d', 3);
        corresponding.put('e', 3);
        corresponding.put('f', 3);
        corresponding.put('g', 4);
        corresponding.put('h', 4);
        corresponding.put('i', 4);
        corresponding.put('j', 5);
        corresponding.put('k', 5);
        corresponding.put('l', 5);
        corresponding.put('m', 6);
        corresponding.put('n', 6);
        corresponding.put('o', 6);
        corresponding.put('p', 7);
        corresponding.put('q', 7);
        corresponding.put('r', 7);
        corresponding.put('s', 7);
        corresponding.put('t', 8);
        corresponding.put('u', 8);
        corresponding.put('v', 8);
        corresponding.put('w', 9);
        corresponding.put('x', 9);
        corresponding.put('y', 9);
        corresponding.put('z', 9);
    }

    /**
     * 例:zhangsan -> 94564726
     * @param name
     * @return
     */
    public String nameToNum(String name){
        StringBuffer reStringBuffer = new StringBuffer();
        for (int i = 0; i < name.length(); i++) {
            Character key = Character.toLowerCase(name.charAt(i));
            if (corresponding.containsKey(key)) {
                reStringBuffer.append(corresponding.get(key));
            } else {
                //当前字符不是26个英文字符,因此在corresponding中没有其对应的数字。
            }
        }
        return reStringBuffer.toString();
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
        NameToPhoneNum util = new NameToPhoneNum();
        String testNameString = "zhangsan";
        String result = util.nameToNum(testNameString);
        System.out.println(testNameString + "->" + result);
    }
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值