电话号码的字母组合
程序员文章站
2022-06-05 13:41:52
...
1,原文地址
https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/
2,题目
给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例:
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
说明:
尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
3,源码示例
public List<String> letterCombinations(String digits) {
if(digits == null || digits.length() == 0){
return new ArrayList<>();
}
Map<Character,String> number2Map = new HashMap<>();
number2Map.put('2',"abc");
number2Map.put('3',"def");
number2Map.put('4',"ghi");
number2Map.put('5',"jkl");
number2Map.put('6',"mno");
number2Map.put('7',"pqrs");
number2Map.put('8',"tuv");
number2Map.put('9',"wxyz");
List<String> res = new ArrayList<>();
dfs("",0,res,digits,number2Map);
return res;
}
private void dfs(String s, int i, List<String> res, String digits, Map<Character, String> number2Map) {
if(i == digits.length()){
res.add(s);
return;
}
String letters = number2Map.get(digits.charAt(i));
for(int j = 0;j<letters.length();j++){
dfs(s+letters.charAt(j),i+1,res,digits,number2Map);
}
}
上一篇: tensorflow入门变量常量
下一篇: 编译ORB_SLAM2