LeetCode-电话号码的字母组合-Java

简介: 电话号码的字母组合-Java

用了HashMap,效率还行,不过感觉有更优的解法。后边再考虑优化。

class Solution {
   
    public static List<String> letterCombinations(String digits) {
   
        if(digits.isEmpty())return new ArrayList<String>();
        String[] num2 = {
   "a","b","c"};
        String[] num3 = {
   "d","e","f"};
        String[] num4 = {
   "h","g","i"};
        String[] num5 = {
   "j","k","l"};
        String[] num6 = {
   "m","n","o"};
        String[] num7 = {
   "p","q","r","s"};
        String[] num8 = {
   "t","u","v"};
        String[] num9 = {
   "w","x","y","z"};
        char[] numbers = digits.toCharArray();
        int point = 1;
        int length = numbers.length;
        List<String> list = new ArrayList<String>();
        List<String> result;
        HashMap<Character, String[]> info = new HashMap<Character, String[]>();
        info.put('2', num2);
        info.put('3', num3);
        info.put('4', num4);
        info.put('5', num5);
        info.put('6', num6);
        info.put('7', num7);
        info.put('8', num8);
        info.put('9', num9);
        String[] buffer = info.get(numbers[0]);
        for(int s = 0 ,l = buffer.length;s<l;s++) {
   
            list.add(buffer[s]);
        }
        while(point<length) {
   
            result=new ArrayList<String>();
            String[] useing = info.get(numbers[point]);
            for(int i = 0 , m = list.size();i < m ;i++ ) {
   
                for(int j = 0,k = useing.length; j < k ; j++) {
   
                    result.add(list.get(i)+ useing[j]);
                }
            }
            list=result;
            point++;
        }
        return list;
    }
}
目录
相关文章
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
3月前
|
存储 算法
LeetCode第49题字母异位词分组
LeetCode第49题"字母异位词分组"的解题方法,通过将每个字符串的字符排序后作为键存储在HashMap中,有效地将所有字母异位词分组。
LeetCode第49题字母异位词分组
|
1月前
|
存储
Leetcode第49题(字母异位词分组)
LeetCode第49题要求将字符串数组中的字母异位词分组,可以通过将每个字符串排序后作为键存入哈希表,最后将哈希表中的值添加到结果列表中来实现。
14 1
|
1月前
|
算法
Leetcode第十七题(电话号码的字母组合)
这篇文章介绍了如何使用深度优先搜索(DFS)算法来解决LeetCode第17题——电话号码的字母组合问题,通过递归方法生成所有可能的字母组合。
15 0
Leetcode第十七题(电话号码的字母组合)
|
1月前
|
索引
【LeetCode 11】242.有效的字母异位词
【LeetCode 11】242.有效的字母异位词
13 0
【LeetCode 11】242.有效的字母异位词
|
1月前
|
算法
【LeetCode 52】17.电话号码的字母组合
【LeetCode 52】17.电话号码的字母组合
31 0
|
1月前
|
算法 Java
LeetCode(一)Java
LeetCode(一)Java
|
3月前
|
算法
LeetCode第17题电话号码的字母组合
该文章介绍了 LeetCode 第 17 题电话号码的字母组合的解法,通过分析得出可使用递归和回溯的思想解决,避免循环穷举的高循环次数,并给出了具体的编码实现,同时总结了该题较难理解,需要了解递归的本质,当嵌套循环层次多时可考虑递归。
LeetCode第17题电话号码的字母组合
|
3月前
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
66 2
|
3月前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
48 1
下一篇
无影云桌面