Letter Combinations of a Phone Number

题目
Given a digit string, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below.

Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
image.png

答案

class Solution {
    public List<String> letterCombinations(String digits) {
        List<String> list = new ArrayList<String>();
        HashMap<Character, String> map = new HashMap<Character, String>();
        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");
        recur(digits, 0, "", list, map);
        return list;
    }
    
    public void recur(String digits, int curr_index, String curr_letters, List<String> list, HashMap<Character, String> map) {
        if(curr_index == digits.length()) {
            if(!curr_letters.equals(""))
                list.add(curr_letters);
            return;
        }
        char digit = digits.charAt(curr_index);
        if(digit == '0' || digit == '1') {
            recur(digits, curr_index + 1, curr_letters, list, map);
            return;
        }
        // Three choices
        String s = map.get(digit);
        for(int i = 0; i < s.length(); i++) {
            recur(digits, curr_index + 1, curr_letters + s.charAt(i), list, map);
        }
    }
}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容