leetcode17电话号码的字母组合
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例 1: 输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2: 输入:digits = "" 输出:[]
示例 3: 输入:digits = "2" 输出:["a","b","c"]
提示: 0 <= digits.length <= 4 digits[i] 是范围 ["2", "9"] 的一个数字。 package leetcode; import java.util.ArrayList; import java.util.List; public class LetterCombinations_17 { public List letterCombinations(String digits) { List res = new ArrayList<>(); List temp = new ArrayList<>(); for (int i = 0; i < digits.length(); i++) { if (res.size() == 0) { temp.addAll(mapDigits("", digits.substring(i, i + 1))); } else { for (int j = 0; j < res.size(); j++) { temp.addAll(mapDigits(res.get(j), digits.substring(i, i + 1))); } } res = temp; temp = new ArrayList<>(); } return res; } public List mapDigits(String ori, String digit) { List res = new ArrayList<>(); switch (digit) { case "2": res.add(ori + "a"); res.add(ori + "b"); res.add(ori + "c"); break; case "3": res.add(ori + "d"); res.add(ori + "e"); res.add(ori + "f"); break; case "4": res.add(ori + "g"); res.add(ori + "h"); res.add(ori + "i"); break; case "5": res.add(ori + "j"); res.add(ori + "k"); res.add(ori + "l"); break; case "6": res.add(ori + "m"); res.add(ori + "n"); res.add(ori + "o"); break; case "7": res.add(ori + "p"); res.add(ori + "q"); res.add(ori + "r"); res.add(ori + "s"); break; case "8": res.add(ori + "t"); res.add(ori + "u"); res.add(ori + "v"); break; case "9": res.add(ori + "w"); res.add(ori + "x"); res.add(ori + "y"); res.add(ori + "z"); break; } return res; } public static void main(String[] args) { LetterCombinations_17 letterCombinations_17 = new LetterCombinations_17(); List strings = letterCombinations_17.letterCombinations("23"); System.out.println(strings); } }