将信件转换为数字

时间:2014-05-21 17:37:24

标签: java

我正在寻找将信件转换为数字的简便方法。 结果我需要得到。

A - 1, B-2,C -3 ... Z-26,AA-27,AB-28

等等。

目前,我刚刚创建了用于转换[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));
}

我们如何转换下一个值?

修改:感谢评论中的 Zeb ,答案是:

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;
}

0 个答案:

没有答案