package com.interview.books.leetcodeoj;
import java.util.ArrayList;
import java.util.List;
/**
* Created_By: stefanie
* Date: 14-12-18
* Time: 下午3:21
*/
public class LOJ17_LetterCombinationOfAPhoneNumber {
//1.use String to hold all the options
//2.init global class variable carefully
//3.for recursive permutation generation, be carefully about when to return, if(offset >= digits.length())
List<String> sols;
String[] map;
public List<String> letterCombinations(String digits) {
sols = new ArrayList();
map = initMap();
decode(digits, 0, "");
return sols;
}
private void decode(String digits, int offset, String prefix){
if(offset >= digits.length()) {
sols.add(prefix);
return;
}
int digit = digits.charAt(offset) - '0';
String options = map[digit];
for(int i = 0; i < options.length(); i++){
decode(digits, offset + 1, prefix + options.charAt(i));
}
}
public String[] initMap(){
return new String[]{"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
}
}