力扣17题Java

简介: 力扣17题Java

题目

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

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

image.png

image.png

代码:

class Solution {

   public List<String> letterCombinations(String digits) {

       int length = digits.length();

       List<String> ans = new ArrayList<>();

       if(length == 0) return ans;

       Map<Character, String> numMap = new HashMap<>(){{

           put('2', "abc");

           put('3', "def");

           put('4', "ghi");

           put('5', "jkl");

           put('6', "mno");

           put('7', "pqrs");

           put('8', "tuv");

           put('9', "wxyz");

       }};

       StringBuffer sb = new StringBuffer();

       trackback(digits, numMap, ans, 0, sb);

       return ans;

   }

   public void trackback(String digits, Map<Character, String> phoneMap, List<String> ans, int index, StringBuffer sb){

       if(index == digits.length()){

           ans.add(sb.toString());

       } else {

           char num = digits.charAt(index);

           String letters = phoneMap.get(num);

           int letCount = letters.length();

           for(int i=0; i<letCount; ++i){

               char c = letters.charAt(i);

               sb.append(c);  

               trackback(digits, phoneMap, ans, index+1, sb);  

               sb.deleteCharAt(index);

           }

       }

   }

}




相关文章
|
算法 Java
LeetCode(一)Java
LeetCode(一)Java
159 0
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
178 6
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
196 2
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
186 1
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
198 1
|
算法 Java
[Java·算法·简单] LeetCode 283. 移动零
[Java·算法·简单] LeetCode 283. 移动零
132 2
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
227 0
|
算法 Java
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
190 0
|
存储 算法 Java
LeetCode初级算法题:两数之和+斐波拉契数列多种java解法
LeetCode初级算法题:两数之和+斐波拉契数列多种java解法
162 0
|
算法 Java 索引
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
LeetCode初级算法题:寻找数组的中心索引+x的平方根+三个数的最大乘积+Leetcode 149:直线上最多的点数 Java详解
136 0