03电话号码的字母组合

电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

img

示例 1:

输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

示例 2:

输入:digits = "2"
输出:["a","b","c"]

提示:

  • 1 <= digits.length <= 4
  • digits[i] 是范围 ['2', '9'] 的一个数字。
Map<Character,String> map = new HashMap<>(){{
  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 List<String> letterCombinations(String digits) {
  ArrayList<String> res = new ArrayList<>();
  dfs(0,digits,new StringBuffer(),res);
  return res;
}

private void dfs(int index,String digits,StringBuffer buffer,List<String> res){
  if(index == digits.length()){
    res.add(buffer.toString());
    return;
  }

  char k = digits.charAt(index);
  String s = map.get(k);
  char[] charArray = s.toCharArray();
  for (char c : charArray) {
    buffer.append(c);
    dfs(index+1,digits,buffer,res);
    buffer.deleteCharAt(buffer.length()-1);
  }
}

03电话号码的字母组合
https://jiajun.xyz/2026/02/19/算法/10回溯/03电话号码的字母组合/
作者
Lambda
发布于
2026年2月19日
许可协议