Epic Systems Interview Question
Software Engineer / Developerspublic static final String[] keypad = {"", "", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"};
String[] ans = printAlphabet(410292);
for (String str : ans) {
System.out.println(str);
}
static String[] printAlphabet(int num){
if (num >= 0 && num < 10){
String[] retStr;
if (num == 0 || num ==1){
retStr = new String[]{""};
} else {
retStr = new String[keypad[num].length()];
for (int i = 0 ; i < keypad[num].length(); i++){
retStr[i] = String.valueOf(keypad[num].charAt(i));
}
}
return retStr;
}
String[] nxtStr = printAlphabet(num/10);
int digit = num % 10;
String[] curStr = null;
if(digit == 0 || digit == 1){
curStr = new String[]{""};
} else {
curStr = new String[keypad[digit].length()];
for (int i = 0; i < keypad[digit].length(); i++){
curStr[i] = String.valueOf(keypad[digit].charAt(i));
}
}
String[] result = new String[curStr.length * nxtStr.length];
int k=0;
for (String cStr : curStr){
for (String nStr : nxtStr){
result[k++] = nStr + cStr;
}
}
return result;
}
public class Keypad {
public static final String[] keypad = {" ", " ", "ABC", "DEF", "GHI", "JKL", "MNO", "PQRS", "TUV", "WXYZ"};
static StringBuffer s=new StringBuffer();
public void printAlphabets(int number){
int digit = number%10;
int i;
if(number == 0)
{
System.out.print(s.toString()+", ");
return;
}
String currentString = keypad[digit];
for(i = 0;i<currentString.length();i++){
s.append(currentString.charAt(i));
printAlphabets(number/10);
s.delete(s.length()-1,s.length());
}
}
public static void main(String argv[]) {
Keypad key = new Keypad();
key.printAlphabets(410292);
}
}
Hi,
- Samantha October 10, 2010Can you please post the complete question? Also, if possible the code.
Thank you
Sam