package com.daily.daily20210204;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Project: dailyCode
* @Site: http://www.zhao1iang.club/
* @Copyright: ©CodeLamp
* @Author: zhaoliang
* @Create: 2021-02-04 14:52
* @Desc: 电话号码的字母组合
**/
public class letterCombinations {
//给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
//
//给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
public List<String> letterCombinations(String digits){
ArrayList<String> res = new ArrayList<>();
Map<Character,char[]> map = new HashMap<>();
map.put('2',new char[]{'a','b','c'});
map.put('3',new char[]{'d','e','f'});
map.put('4',new char[]{'g','h','i'});
map.put('5',new char[]{'j','k','l'});
map.put('6',new char[]{'m','n','o'});
map.put('7',new char[]{'p','q','r','s'});
map.put('8',new char[]{'t','u','v'});
map.put('9',new char[]{'w','x','y','z'});
StringBuffer sb = new StringBuffer();
helper(digits,res,map,sb);
return res;
}
private void helper(String digits, ArrayList<String> res, Map<Character,char[]> map, StringBuffer sb) {
if (sb.length() == digits.length()){
res.add(sb.toString());
return;
}
for (char c:map.get(digits.charAt(sb.length()))
) {
sb.append(c);
helper(digits,res,map,sb);
sb.deleteCharAt(sb.length()-1);
}
}
}
日常刷题-电话号码的字母组合
最新推荐文章于 2024-04-26 14:00:07 发布