题目
17. 电话号码的字母组合
题解
代码
import java.util.*;
public class code17 {
public static Map<String, String> phone = new HashMap<String, String>() {
{
put("2", "abc");
put("3", "def");
put("4", "ghi");
put("5", "jkl");
put("6", "mno");
put("7", "pqrs");
put("8", "tuv");
put("9", "wxyz");
}
};
public static List<String> output;
public static void backtrack(String combination, String next_digits) {
if (next_digits.length() == 0) {
output.add(combination);
} else {
String digit = next_digits.substring(0, 1);
String letters = phone.get(digit);
for (int i = 0; i < letters.length(); i++) {
String letter = phone.get(digit).substring(i, i + 1);
backtrack(combination + letter, next_digits.substring(1));
}
}
}
public static List<String> letterCombinations(String digits) {
output = new ArrayList<String>();
if (digits.length() != 0) {
backtrack("", digits);
} else if (digits.length() == 0) {
return new ArrayList<String>();
}
return output;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String s = sc.next();
letterCombinations(s);
System.out.println(output);
output.clear();
}
}
}
参考
- 电话号码的字母组合——题解一
- 浅谈java中static作用
- Java中static作用及用法详解
- java 字符串截取的几种方式
- Java截取字符串的常见方法
- java:截取字符串的substring和substr
- Collections.emptyList() vs. new instance
- 返回空list的方式
- List.clear方法——从列表中移除所有元素
- JAVA构造MAP并初始化MAP
- 在 Java 中初始化 List 的五种方法
- Java 中 HashMap 初始化时赋值
特别注意