I am looking for easy way of converting letter to number. In result I need to get.
A - 1, B - 2, C -3 ... Z-26, AA - 27, AB -28
and so on.
For now, I just created code for converting all letters from [A - Z]
public static int getNumber(String str) {
char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
Map<Character, Integer> letterWithNumbers = new HashMap<>();
int counter = 1;
for(char c: alphabet) {
letterWithNumbers.put(c, counter ++);
}
return letterWithNumbers.get(str.charAt(0));
}
How can we convert the next values?
Edit: Thanks to Zeb in comments the answer is:
public static int getNumber2(String str) {
int result = 0;
char[] alph = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
Map<Character, Integer> vals = new HashMap<>();
int i = 1;
for(char c: alph){
vals.put(c, i++);
}
char[] strChar = new StringBuilder(str).reverse().toString().toCharArray();
int base = alph.length;
int pow = 0;
for(char c: strChar){
result+=vals.get(c) * Math.pow(base, pow++);
}
return result;
}