LeetCode 17. 电话号码的字母组合

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

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

采用DFS
Map<Character, String> cache = new HashMap<>();
public List<String> letterCombinations(String digits) {
if(null == digits || digits.length() == 0) {
return new ArrayList<>();
}
cache.put('2', "abc");
cache.put('3', "def");
cache.put('4', "ghi");
cache.put('5', "jkl");
cache.put('6', "mno");
cache.put('7', "pqrs");
cache.put('8', "tuv");
cache.put('9', "wxyz");
List<String> res = new ArrayList<>();
createRes(0, new StringBuilder(), res, digits);
return res;
}
public void createRes(int index, StringBuilder s, List<String> res, String digits) {
if (index == digits.length()) {
res.add(s.toString());
return;
}
String curStr = cache.get(digits.charAt(index));
for(int i = 0;i < curStr.length();i++) {
createRes(index + 1, s.append(curStr.charAt(i)), res, digits);
s.deleteCharAt(s.length()-1);
}
return;
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容