问题描述:
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
输入:"23" 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. 说明: 尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。 上代码,拿去即可运行:
package com.onlyqi.upup01.four;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static final Map<String, String> phone = new HashMap<String, String>() ;
static {
phone.put("2", "abc");
phone.put("3", "def");
phone.put("4", "ghi");
phone.put("5", "jkl");
phone.put("6", "mno");
phone.put("7", "pqrs");
phone.put("8", "tuv");
phone.put("9", "wxyz");
}
public static void main(String[] args) {
System.out.println(aa("2","3"));
}
public static List<String>aa(String a,String b){
List<String>list=new ArrayList<>();
String strA = null;
String strB = null;
for (String s : phone.keySet()) {
if(s.equals(a)){
strA=phone.get(a);
}else if(s.equals(b)){
strB=phone.get(b);
}
}
String[] arrayA=strA.split("");
String[] arrayB=strB.split("");
for (String s : arrayA) {
for (String s1 : arrayB) {
list.add(s+s1);
}
}
return list;
}
}
运行结果:
??我要刷100道算法题,第42道?
|