给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例 1:
输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2:
输入:digits = ""
输出:[]
示例 3:
输入:digits = "2"
输出:["a","b","c"]
提示:
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);
}
}
页面更新:2024-04-03
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号