Advertisement
Guest User

17. Letter Combinations|Time:Time:O(n*4^n) | Space: O(4^n)

a guest
Aug 24th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.32 KB | None | 0 0
  1. // Problem: https://leetcode.com/problems/letter-combinations-of-a-phone-number/
  2. // Solution: https://www.youtube.com/watch?v=a-sMgZ7HGW0
  3.  
  4. class Solution {
  5.     private static final String[] mapping = {
  6.         "0",
  7.         "1",
  8.         "abc",
  9.         "def",
  10.         "ghi",
  11.         "jkl",
  12.         "mno",
  13.         "pqrs",
  14.         "tuv",
  15.         "wxyz"
  16.     };
  17.    
  18.     public List<String> letterCombinations(String digits) {
  19.         List<String> mnemonics = new ArrayList<>();
  20.         if(digits == null || digits.length() == 0) {
  21.             return mnemonics;
  22.         }
  23.         char[] partialMnemonic = new char[digits.length()];
  24.        
  25.         partialMnemonicHelper(digits, 0, partialMnemonic, mnemonics);
  26.         return mnemonics;
  27.     }
  28.    
  29.     private void partialMnemonicHelper(String phoneNumber, int digit, char[] partialMnemonic, List<String> mnemonics) {
  30.         if(digit == phoneNumber.length()) {
  31.             mnemonics.add(new String(partialMnemonic));
  32.         } else {
  33.             for(int i = 0; i < mapping[phoneNumber.charAt(digit) - '0'].length(); i++) {
  34.                 char c = mapping[phoneNumber.charAt(digit) - '0'].charAt(i);
  35.                 partialMnemonic[digit] = c;
  36.                 partialMnemonicHelper(phoneNumber, digit + 1, partialMnemonic, mnemonics);
  37.             }
  38.         }
  39.     }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement