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;
    }
}
目录
相关文章
|
6天前
|
Java API Apache
探讨Java中检测字符串是否包含数字和字母的技术
探讨Java中检测字符串是否包含数字和字母的技术
10 2
|
13天前
|
算法 Java
[Java·算法·简单] LeetCode 283. 移动零
[Java·算法·简单] LeetCode 283. 移动零
17 2
|
13天前
|
算法 Java
[Java·算法·中等] LeetCode21. 合并两个有序链表
[Java·算法·中等] LeetCode21. 合并两个有序链表
15 2
|
17天前
|
算法 容器
【LeetCode刷题】滑动窗口解决问题:水果成篮、找到字符串中所有字母异位词
【LeetCode刷题】滑动窗口解决问题:水果成篮、找到字符串中所有字母异位词
|
21天前
|
存储 算法 安全
LeetCode 题目 49:字母异位词分组 5种算法实现与典型应用案例【python】
LeetCode 题目 49:字母异位词分组 5种算法实现与典型应用案例【python】
|
2天前
|
存储
力扣经典150题第四十二题:字母异位词分组
力扣经典150题第四十二题:字母异位词分组
5 0
|
2天前
|
存储
力扣经典150题第四十一题:有效的字母异位词
力扣经典150题第四十一题:有效的字母异位词
4 0
|
6天前
|
Java
使用java计算一个字符串中字母出现的次数
使用java计算一个字符串中字母出现的次数
6 0
|
17天前
|
算法
【经典LeetCode算法题目专栏分类】【第11期】递归问题:字母大小写全排列、括号生成
【经典LeetCode算法题目专栏分类】【第11期】递归问题:字母大小写全排列、括号生成
|
17天前
|
算法
【经典LeetCode算法题目专栏分类】【第8期】滑动窗口:最小覆盖子串、字符串排列、找所有字母异位词、 最长无重复子串
【经典LeetCode算法题目专栏分类】【第8期】滑动窗口:最小覆盖子串、字符串排列、找所有字母异位词、 最长无重复子串