作者:reed,一个热爱技术的斜杠青年,程序员面试联合创始人
前文回顾:
leetcode5.最长回文子串--每天刷一道leetcode系列!
leetcode14. 最长公共前缀--每天刷一道leetcode算法题系列!
leetcode15. 三数之和--每天刷一道leetcode算法系列!
leetcode16. 最接近的三数之和--每天刷一道leetcode算法系列!
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
输入:"23"
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
对于输入23,如下图所示。
String[] telMap = {"_","!@#","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
List res = new ArrayList();
public List letterCombinations(String digits) {
if(digits == null || digits.length() == 0){
return res;
}
process(digits, "", 0);
return res;
}
private void process(String digits, String letter, int index){
//递归的第一步,确定终止条件,
if(index == digits.length()){
res.add(letter);
return;
}
String str = telMap[digits.charAt(index)-'0'];
for(int i = 0; i < str.length(); i++){
process(digits,letter+str.charAt(i),index+1);
}
}
特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:
长按订阅更多精彩▼
如有收获,点个在看,诚挚感谢