|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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;
- }
- }
复制代码 |
|