How to get all letter combinations of a phone number given a string of digits from 2-9 in Java

1 Answer

0 votes
import java.util.ArrayList;
import java.util.List;

// Letter Combinations of a Phone Number
// Given a string containing digits from 2-9, 
// get all possible letter combinations that a phone number represent

class Program {
    //                               2      3      4      5      6      7       8      9
    List<String> letters = List.of("abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz");
    List<String> result = new ArrayList<>();

    void print(List<String> lst) {
        for (String n : lst) {
            System.out.print(n + " ");
        }
    }

    void createCombinations(String digits, String output, int di) {
        if (digits.length() == di) {
            result.add(output);
            return;
        }
        for (int i = 0; i < letters.get(digits.charAt(di) - '2').length(); i++) {
            // '2' for letters index. 2->0 3->1 ('2' - 48('0') = 2 - 2 = 0 (index 0)
            output += letters.get(digits.charAt(di) - '2').charAt(i);
            createCombinations(digits, output, di + 1);
            output = output.substring(0, output.length() - 1);
        }
    }

    List<String> letterCombinationsOfPhoneNumber(String digits) {
        if (digits.equals("")) {
            return result;
        }
        
        String output = "";
        
        createCombinations(digits, output, 0);
        
        return result;
    }

    public static void main(String[] args) {
        Program p = new Program();
        
        List<String> result = p.letterCombinationsOfPhoneNumber("23");
        
        p.print(result);
    }
}



/*
run:

ad ae af bd be bf cd ce cf 

*/

 



answered Mar 4, 2024 by avibootz
edited Mar 4, 2024 by avibootz
...