同城旅行第一题,累死了

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param digits string字符串 输入的号码
     * @return string字符串ArrayList
     */
    ArrayList<String> list = new ArrayList<>();
    public ArrayList<String> letterCombinations (String digits) {
        letterCombinations(digits.toCharArray());
        return list;
    }

    public void letterCombinations (char[] digits) {
        if (digits.length == 1) {
            char c = digits[0];
            if (c == '2') {
                list.add("a");
                list.add("b");
                list.add("c");
            } else if (c == '3') {
                list.add("d");
                list.add("e");
                list.add("f");
            } else if (c == '4') {
                list.add("g");
                list.add("h");
                list.add("i");
            } else if (c == '5') {
                list.add("j");
                list.add("k");
                list.add("l");
            } else if (c == '6') {
                list.add("m");
                list.add("n");
                list.add("o");
            } else if (c == '7') {
                list.add("p");
                list.add("q");
                list.add("r");
                list.add("s");
            } else if (c == '8') {
                list.add("t");
                list.add("u");
                list.add("v");
            } else if (c == '9') {
                list.add("w");
                list.add("x");
                list.add("y");
                list.add("z");
            }
            return;
        }
        char[] chars = new char[digits.length - 1];
        for (int i = 0; i < digits.length - 1; i++) {
            chars[i] = digits[i+1];
        }
        letterCombinations(chars);
        char c = digits[0];
        if (c == '2') {
            ArrayList<String> temp = new ArrayList<>();
            for (int j = 0; j < list.size(); j++) {
                temp.add("a" + list.get(j));
            }
            for (int j = 0; j < list.size(); j++) {
                temp.add("b" + list.get(j));
            }
            for (int j = 0; j < list.size(); j++) {
                temp.add("c" + list.get(j));
            }
            list = temp;
        } else if (c == '3') {
            ArrayList<String> temp = new ArrayList<>();
            for (int j = 0; j < list.size(); j++) {
                temp.add("d" + list.get(j));
            }
            for (int j = 0; j < list.size(); j++) {
                temp.add("e" + list.get(j));
            }
            for (int j = 0; j < list.size(); j++) {
                temp.add("f" + list.get(j));
            }
            list = temp;
        } else if (c == '4') {
            ArrayList<String> temp = new ArrayList<>();
            for (int j = 0; j < list.size(); j++) {
                temp.add("g" + list.get(j));
            }
            for (int j = 0; j < list.size(); j++) {
                temp.add("h" + list.get(j));
            }
            for (int j = 0; j < list.size(); j++) {
                temp.add("i" + list.get(j));
            }
            list = temp;
        } else if (c == '5') {
            ArrayList<String> temp = new ArrayList<>();
            for (int j = 0; j < list.size(); j++) {
                temp.add("j" + list.get(j));
            }
            for (int j = 0; j < list.size(); j++) {
                temp.add("k" + list.get(j));
            }
            for (int j = 0; j < list.size(); j++) {
                temp.add("l" + list.get(j));
            }
            list = temp;
        } else if (c == '6') {
            ArrayList<String> temp = new ArrayList<>();
            for (int j = 0; j < list.size(); j++) {
                temp.add("m" + list.get(j));
            }
            for (int j = 0; j < list.size(); j++) {
                temp.add("n" + list.get(j));
            }
            for (int j = 0; j < list.size(); j++) {
                temp.add("o" + list.get(j));
            }
            list = temp;
        } else if (c == '7') {
            ArrayList<String> temp = new ArrayList<>();
            for (int j = 0; j < list.size(); j++) {
                temp.add("p" + list.get(j));
            }
            for (int j = 0; j < list.size(); j++) {
                temp.add("q" + list.get(j));
            }
            for (int j = 0; j < list.size(); j++) {
                temp.add("r" + list.get(j));
            }
             for (int j = 0; j < list.size(); j++) {
                temp.add("s" + list.get(j));
            }
            list = temp;
        } else if (c == '8') {
            ArrayList<String> temp = new ArrayList<>();
            for (int j = 0; j < list.size(); j++) {
                temp.add("t" + list.get(j));
            }
            for (int j = 0; j < list.size(); j++) {
                temp.add("u" + list.get(j));
            }
             for (int j = 0; j < list.size(); j++) {
                temp.add("v" + list.get(j));
            }
            list = temp;
        } else if (c == '9') {
            ArrayList<String> temp = new ArrayList<>();
            for (int j = 0; j < list.size(); j++) {
                temp.add("w" + list.get(j));
            }
            for (int j = 0; j < list.size(); j++) {
                temp.add("x" + list.get(j));
            }
             for (int j = 0; j < list.size(); j++) {
                temp.add("y" + list.get(j));
            }
            for (int j = 0; j < list.size(); j++) {
                temp.add("z" + list.get(j));
            }
            list = temp;
        }
    }
}

全部评论
lc原题
点赞 回复 分享
发布于 2023-10-12 20:34 陕西

相关推荐

头像
09-12 22:48
中南大学 Java
微步在线一面,上来本来还行自我介绍的,结果都不要自我介绍,直接开始八股轰炸:1、介绍一下Java的Object对象有哪些方法?2、Object的equals方法和hashCode方法要一起重写,原因是什么呢?3、介绍一下HashMap4、你一般使用的JDK版本是多少?谈谈Java&nbsp;8、11、17的新特性5、Java的异常分为哪几种?6、受检异常和非受检异常在使用上有何不同?7、介绍一下Java对象的创建过程8、创建对象过程的内存分配,是分配到哪儿?什么情况下会发生堆内存的溢出?9、对于内存溢出这种错误,Java不是有自己的垃圾回收器吗,它为什么不会把它回收掉?10、引用类型除了强引用还是有什么类型的引用?11、线上Java的服务,它报警CPU使用率100%,怎么去进行排查?12、使用过synchronized关键字吗?它修饰普通方法和静态方法上有什么区别?13、使用synchronized关键字锁一个代码块,括号里面能锁String对象或Integer对象吗?14、知道CopyOnWriteArrayList吗?它是怎么保证线程安全的?15、List有ArrayList和LinkedList,你认为有没有CopyOnWriteLinkedList呢?为什么没有?16、使用过线程池吗?谈谈线程池有哪些核心参数?17、假设最大线程数为10,核心线程8,正在运行,又来了一个任务,正常情况是先入队,能否不让其入队,先让其十个线程跑满再入队?我问为什么都不用自我介绍,他说面试的人太多了,根本筛选不过来,岗位一开没几天就有上百份简历了,只能通过这种方式快速筛选
查看17道真题和解析
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务