[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/wpq2014/JavaArithmetic/master/src/LeetCode/LeetCode17.java [Back]  [Original]

package LeetCode;

import java.util.ArrayList;
import java.util.List;

public class LeetCode17 {

    /// 17. Letter Combinations of a Phone Number
    /// https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/
    /// : O(2^len(s))
    /// : O(len(s))

    private String letterMap[] = {
            " ",    //0
            "",     //1
            "abc",  //2
            "def",  //3
            "ghi",  //4
            "jkl",  //5
            "mno",  //6
            "pqrs", //7
            "tuv",  //8
            "wxyz"  //9
    };

    private ArrayList res;

    public List letterCombinations(String digits) {

        res = new ArrayList();

        if (digits.equals(""))
            return res;

        findCombination(digits, 0, "");
        return res;
    }

    // sdigits[0...index-1]
    // digits[index], digits[0...index]
    private void findCombination(String digits, int index, String s) {

        if (index == digits.length()) {
            res.add(s);
            return;
        }

        Character c = digits.charAt(index);
        String letters = letterMap[c - '0'];
        for (int i = 0; i < letters.length(); i++) {
            findCombination(digits, index + 1, s + letters.charAt(i));
        }
        return;
    }

    private static void printList(List list) {
        for (String s : list)
            System.out.println(s);
    }

    public static void main(String[] args) {

        printList((new LeetCode17()).letterCombinations("234"));

    }


}

Web Proxy Viewer  |  New URL  |  Original Page