|  | 
 
| 
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  复制代码public class CaseAlphabetNumber {
    public static void main(String[] args) throws InterruptedException {
        Long[] data = {
                0L/* A */, 1L/* B */, 26L/* AA */, 52L/* BA */, 676L/* ZA */, 702L/* AAA */, 1378L/* BAA */,
                18278L/* AAAA */, 35854L/* BAAA */, 475254L/* AAAAA */, 932230L/* BAAAA */, 8353082582L/* AAAAAAAA */, 16384892758L/* BAAAAAAA */
        };
        String[] alphaCodes = {
                "A", "B", "AA", "BA", "ZA", "AAA", "BAA", "AAAA", "BAAA", "AAAAA", "BAAAA", "AAAAAAAA", "BAAAAAAA"
        };
        for(int i = 0; i < data.length; i++){
            System.out.printf("%-8s\t", getUpAlphaCode1(data[i], true));
            System.out.printf("%.0f\n", getNumberByUpAlphaCode(alphaCodes[i]));
        }
//        for (int i = 0; i < 500000; i++){
//            System.out.println(i + " " + getUpAlphaCode1(i, true));
//
//            Thread.sleep(1);
//        }
//        String fileName = "ABZ";
//
//        double numberByUpAlphaCode = getNumberByUpAlphaCode(fileName);
//        System.out.println(numberByUpAlphaCode);
//        System.out.println(getUpAlphaCode1(753L, true));
    }
    public static double getNumberByUpAlphaCode(String alphaCode){
        double sum = 0.0;
        int i = 0;
        for(i = 0; i < alphaCode.length() - 1; i++){
            sum += (alphaCode.charAt(i) - 'A' + 1) * Math.pow(26, alphaCode.length() - 1 -i);
        }
        sum += alphaCode.charAt(i) - 'A';
        return sum;
    }
    public static String getUpAlphaCode1(Long number, boolean isStart){
        String strCode = "";
        // 当数字小于 26
        if(isStart && number < 26){
            return "" + (char)('A' + (number%26));
        }
        // 当这是第一次开始循环
        if(isStart){
            char tch =  (char)('A' + (number % 26));
            strCode = getUpAlphaCode1(number/26, false) + tch;
            return strCode;
        }
        // 当数字是 1 时
        if(number == 1) return "A";
        char endLog = 0;
        if(number%26 == 0){
            endLog = 'Z';
            number -= 1;
        }else{
            endLog = (char) ('A' + number%26 - 1);
        }
        number /= 26;
        if(number - 1 == 0){
            return getUpAlphaCode1(number, false)+endLog;
        }
        if(number - 1 < 0) return "" + endLog;
        return getUpAlphaCode1(number, false) + endLog;
    }
}
 | 
 |