<力扣>中等17.电话号码的字母组合

力扣

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/letter-combinations-of-a-phone-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

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

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

 

class Solution {// 数字到号码的映射数组private String[] map = {"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};// 路径private StringBuilder sb = new StringBuilder();// 结果集private List res = new ArrayList<>();public List letterCombinations(String digits) {if(digits == null || digits.length() == 0) return res; // 如果digits为null 则digits.length()就会报空指针异常 所以这里先判断是否为空 再调用函数backtrack(digits,0); // 从第0个位置的数字及第一个数字开始转换 return res;}// 回溯函数private void backtrack(String digits,int index) {if(sb.length() == digits.length()) { // 已全部转换完成 res.add(sb.toString()); // 将缓冲区中内容转成字符串即可return;}String val = map[digits.charAt(index)-'2']; // 将下标为 index-2 处的数字转换成字符串 注意需 -2for(char ch:val.toCharArray()) {sb.append(ch);backtrack(digits,index+1);sb.deleteCharAt(sb.length()-1); // 回溯 撤销在这一步的选择 当有一个序列全部转换完成时 需回溯至最初  转换下一组}}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部