/**
* 这是leetcode 上的一道题目,根据手机按键上的数字对应的字母,返回任意两个数字按键可能的字母组合
例如:
输入:String “23”
返回:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]
*/
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
/**
* 分析:思路一,我们进行遍历,采用
*/
public class Algorithm002 {
//先定义初始化的数组
private static char[][] dict = { {},{ 'a', 'b', 'c' }, { 'd', 'e', 'f' }, { 'g', 'h', 'i' }, { 'j', 'k', 'l' }, { 'm', 'n', 'o' },
{ 'p', 'q', 'r', 's' }, { 't', 'u', 'v' }, { 'w', 'x', 'y', 'z' } };
public static List<String> letterCombinations(String nums){
LinkedList<String> results = new LinkedList<>();
if(nums.length()==0){
return results;
}else{
addNumber(results,0," ",nums);
}
return results;
}
public static void addNumber(List<String> list, int i, String curstr, String digits)
{
if (i == digits.length()) {
list.add(curstr);
return;
}
char[] candidates = dict[digits.charAt(i) - '1'];
for (char c : candidates)
addNumber(list, i+1, curstr + c, digits);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
List<String> list =letterCombinations(str);
for (String sss:list) {
System.out.println("字符串"+sss);
}
}
}
实际测试效果如下:
45
字符串 gj
字符串 gk
字符串 gl
字符串 hj
字符串 hk
字符串 hl
字符串 ij
字符串 ik
字符串 il