题目

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 Collections.emptyList();
            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();
            // List<String> ans = new ArrayList<String>();
            // ans = letterCombinations(s);
            // System.out.println(ans);
            // ans.clear();

            String s = sc.next();
            letterCombinations(s);
            System.out.println(output);
            output.clear();
        }
    }
}

参考

  1. 电话号码的字母组合——题解一
  2. 浅谈java中static作用
  3. Java中static作用及用法详解
  4. java 字符串截取的几种方式
  5. Java截取字符串的常见方法
  6. java:截取字符串的substring和substr
  7. Collections.emptyList() vs. new instance
  8. 返回空list的方式
  9. List.clear方法——从列表中移除所有元素
  10. JAVA构造MAP并初始化MAP
  11. 在 Java 中初始化 List 的五种方法
  12. Java 中 HashMap 初始化时赋值

特别注意

为什么某些测试用例下,执行代码返回结果正确,但提交解答却出错了