package com.interview.recursion;
/**
* http://stackoverflow.com/questions/2344496/how-can-i-print-out-all-possible-letter-combinations-a-given-phone-number-can-re
*/
public class KeyPadPermutation {
public void permute(int input[]) {
char result[] = new char[input.length];
permute(input,0,result);
}
private void permute(int input[], int pos, char result[]) {
if (pos == input.length) {
for (int i = 0; i < result.length; i++) {
System.out.print(result[i]);
}
System.out.println();
return;
}
char[] str = getCharSetForNumber(input[pos]);
for (char ch : str) {
result[pos] = ch;
permute(input, pos+1, result);
}
}
private char[] getCharSetForNumber(int num) {
switch(num){
case 1 : return "abc".toCharArray();
case 2 : return "def".toCharArray();
case 3: return "ghi".toCharArray();
case 4: return "jkl".toCharArray();
case 5: return "mno".toCharArray();
case 6: return "pqrs".toCharArray();
case 8: return "tuv".toCharArray();
case 9: return "wxyz".toCharArray();
}
throw new IllegalArgumentException();
}
public static void main(String args[]){
int input[] = {2,3,1,5};
KeyPadPermutation kpp = new KeyPadPermutation();
kpp.permute(input);
}
}