[leetcode 17][电话号码的字母组合]

电话号码的字母组合

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例 1: 输入:digits = “23” 输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”] 示例 2: 输入:digits = “” 输出:[]
class Solution {
          
   
    public List<String> letterCombinations(String digits) {
          
   
        HashMap<Character, List<Character>> map = new HashMap<>();
        List<Character> list = new ArrayList<>();
        List<String> sList = new ArrayList<>();
        list.add(a);
        list.add(b);
        list.add(c);
        map.put(2, list);
        list = new ArrayList<>();
        list.add(d);
        list.add(e);
        list.add(f);
        map.put(3, list);
        list = new ArrayList<>();
        list.add(g);
        list.add(h);
        list.add(i);
        map.put(4, list);
        list = new ArrayList<>();
        list.add(j);
        list.add(k);
        list.add(l);
        map.put(5, list);
        list = new ArrayList<>();
        list.add(m);
        list.add(n);
        list.add(o);
        map.put(6, list);
        list = new ArrayList<>();
        list.add(p);
        list.add(q);
        list.add(r);
        list.add(s);
        map.put(7, list);
        list = new ArrayList<>();
        list.add(t);
        list.add(u);
        list.add(v);
        map.put(8, list);
        list = new ArrayList<>();
        list.add(w);
        list.add(x);
        list.add(y);
        list.add(z);
        map.put(9, list);
        for (Character c : digits.toCharArray()) {
          
   
            List<Character> list1 = map.get(c);
            List<String> subList = new ArrayList<>();
            for (String s : sList) {
          
   
                for (Character c1 : list1) {
          
   
                    subList.add(s + c1);
                }
            }
            if (sList.isEmpty()) {
          
   
                for (Character c1 : list1) {
          
   
                    subList.add(String.valueOf(c1));
                }
            }
            sList = subList;
        }
        return sList;
    }
}
经验分享 程序员 微信小程序 职场和发展