打印结果:
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);
}
}