java 力扣17题 电话号码的字母组合

class Solution {

    public List<String> letterCombinations(String digits) {

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

        Map<Integer,String> map=new HashMap<>();

        map.put(2, "abc");

        map.put(3, "def");

        map.put(4, "ghi");

        map.put(5, "jkl");

        map.put(6, "mno");

        map.put(7, "pqrs");

        map.put(8, "tuv");

        map.put(9, "wxyz");

        List<Integer> keyList= new ArrayList<>();

        for (int i = 0; i <digits.length(); i++) {

            keyList.add(Integer.parseInt(String.valueOf(digits.charAt(i))));

        }if (keyList.size()==0){

            

        } else if (keyList.size()==1){

            String s = map.get(keyList.get(0));

            char[] chars = s.toCharArray();

            for (char aChar : chars) {

                String s1 = String.valueOf(aChar);

                rs.add(s1);

            }

        }else if(keyList.size()==2){

            String s1 = map.get(keyList.get(0));

            String s2 = map.get(keyList.get(1));

            List<String> strings = mulString(s1, s2);

            for (String string : strings) {

                rs.add(string);

            }

        }else if (keyList.size()==3){

            String s1 = map.get(keyList.get(0));

            String s2 = map.get(keyList.get(1));

            String s3 = map.get(keyList.get(2));

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

            List<String> strings = mulString(s1, s2);

            char[] chars = s3.toCharArray();

            for (char aChar : chars) {

                list3.add(String.valueOf(aChar));

            }

            for (int i = 0; i < strings.size(); i++) {

                for (int j = 0; j < list3.size(); j++) {

                    rs.add(strings.get(i)+list3.get(j));

                }

            }

        }else {

            String s1 = map.get(keyList.get(0));

            String s2 = map.get(keyList.get(1));

            String s3 = map.get(keyList.get(2));

            String s4 = map.get(keyList.get(3));

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

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

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

            List<String> strings = mulString(s1, s2);

            char[] chars = s3.toCharArray();

            for (char aChar : chars) {

                list3.add(String.valueOf(aChar));

            }

            char[] chars1 = s4.toCharArray();

            for (char c : chars1) {

                list4.add(String.valueOf(c));

            }

            for (int i = 0; i < strings.size(); i++) {

                for (int j = 0; j < list3.size(); j++) {

                    listTemp.add(strings.get(i)+list3.get(j));

                }

            }

            for (int i = 0; i < listTemp.size(); i++) {

                for (int j = 0; j < list4.size(); j++) {

                    rs.add(listTemp.get(i)+list4.get(j));

                }

            }

        }

        return rs;

    }

     public List<String> mulString(String a,String b){

        char[] chars1 = a.toCharArray();

        char[] chars2 = b.toCharArray();

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

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

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

        for (char c : chars1) {

            list1.add(String.valueOf(c));

        }

        for (char c : chars2) {

            list2.add(String.valueOf(c));

        }

        for (int i = 0; i < list1.size(); i++) {

            for (int j = 0; j < list2.size(); j++) {

                rs.add(list1.get(i)+list2.get(j));

            }

        }

        return rs;

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值