LeetCode -- 17. 电话号码的字母组合

127 阅读1分钟
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
    public List<String> letterCombinations(String digits) {
         String[] dic = {"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
        List<String> res = new ArrayList<>();
        for(int i = 0;i < digits.length();i++){
            int index = Integer.parseInt(String.valueOf(digits.charAt(i))) - 2;
            
            if(res.size() == 0){
                for(int j = 0;j < dic[index].length();j++){
                    res.add(String.valueOf(dic[index].charAt(j)));
                }
                continue;
            }
            List<String> temp = new ArrayList<>(res);
            res = new ArrayList<>();
            for(int j = 0;j < temp.size();j++){
                String str = temp.get(j);
                for(int m = 0;m < dic[index].length();m++){
                    res.add(str + String.valueOf(dic[index].charAt(m)));
                }
            }
        }
        return res;
    }
}