首页 > 其他 > 详细

电话号码的字母组合

时间:2021-07-01 12:00:28      阅读:11      评论:0      收藏:0      [点我收藏+]

https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/

 

public class _17_电话号码的字母组合 {
private char[][] lettersArray = {
{‘a‘, ‘b‘, ‘c‘}, {‘d‘, ‘e‘, ‘f‘}, {‘g‘, ‘h‘, ‘i‘},
{‘j‘, ‘k‘, ‘l‘}, {‘m‘, ‘n‘, ‘o‘}, {‘p‘, ‘q‘, ‘r‘, ‘s‘},
{‘t‘, ‘u‘, ‘v‘}, {‘w‘, ‘x‘, ‘y‘, ‘z‘}
};
private char[] chars;
/** 用来存储每一层选择的字母 */
private char[] string;
private List<String> list;

public List<String> letterCombinations(String digits) {
if (digits == null) return null;
list = new ArrayList<>();
chars = digits.toCharArray();
if (chars.length == 0) return list;
string = new char[chars.length];
dfs(0);
return list;
}

/**
* @param idx 正在搜索第idx层
*/
private void dfs(int idx) {
// 已经进入到最后一层了,不能再往下搜索
if (idx == chars.length) {
// 得到了一个正确的解
list.add(new String(string));
return;
}

// 先枚举这一层可以做的所有选择
char[] letters = lettersArray[chars[idx] - ‘2‘];
for (char letter : letters) {
string[idx] = letter;
dfs(idx + 1);
}
}

}

电话号码的字母组合

原文:https://www.cnblogs.com/syh918/p/14957428.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!