Question:
Input String 1 = {1, 2, 3, ... , 26}
Input String 2 = {A, B, C, ... , Z}
Output Result 1 = {1, A, 2, B, 3, C, ... , 26, Z}
Output Result 2 = {1, A, 2, A, B, 3, A, B, C, ... , 26, A, B, C, . , Z}
Solution:
public class Combinations {
private static String stringNumbers[]; //1, 2, 3, ... , 26
private static String stringAlphabets[]; //A, B, C, ... , Z
private static String resultNumberAlphabet[]; //1, A, 2, B, 3, C, ... , 26, Z
private static String resultNumberAlphabets[]; //1, A, 2, A, B, 3, A, B, C, ... , 26, A, B, ... , Z
private static final int MAX_NUMBERS = 26;
private static final int MAX_ALPHABETS = 26;
public static void main(String[] args) {
initVariables();
findCombinations();
printResults(resultNumberAlphabet);
printResults(resultNumberAlphabets);
}
private static void initVariables() {
stringNumbers = new String[MAX_NUMBERS];
stringAlphabets = new String[MAX_ALPHABETS];
resultNumberAlphabet = new String[stringNumbers.length + stringAlphabets.length];
resultNumberAlphabets = new String[stringNumbers.length + (stringAlphabets.length * (stringAlphabets.length + 1)/2)]; // Summation Equation = [n*(n+1)/2];
for (int i = 0; i < 26; i++) {
stringNumbers[i] = (i + 1) + "";
stringAlphabets[i] = Character.toString((char)(i + 65));
}
}
private static void findCombinations() {
int k = -1;
int l = -1;
for (int i = 0; i < stringNumbers.length; i++) {
resultNumberAlphabet[++k] = stringNumbers[i];
resultNumberAlphabet[++k] = stringAlphabets[i];
resultNumberAlphabets[++l] = stringNumbers[i];
for (int j = 0; j <= i; j++) {
resultNumberAlphabets[++l] = stringAlphabets[j];
}
}
}
private static void printResults(String result[]) {
for (int i = 0; i < result.length; i++) {
System.out.print(result[i]);
if ((i + 1) == result.length) {
System.out.println(".");
} else {
System.out.print(", ");
}
}
}
}
Any review comments or suggestions?