给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。
> 注意 1 不对应任何字母。
示例:
输入:"23" (2: abc 3: def)
输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
采用深度优先遍历完成
private String[] letterMap = {" ","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
public List<String> letterCombinations(String digits) {
List<String> res = new ArrayList<>();
if(digits.equals("")) return res;
findCombinations(digits, 0, "", res);
return res;
}
private void findCombinations(String digits, int index, String s, List<String> res){
if(digits.length() == index){
res.add(s);
return;
}
String str = letterMap[digits.charAt(index) - '0'];
for(int i=0; i<str.length(); i++){
findCombinations(digits, index+1, s+str.charAt(i), res);
}
return;
}
版权声明:本文为m0_49293816原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。