Excelヘッダ変換

1501 ワード


 
 
package com.cgroup.datastruct;


import java.util.HashMap;
import java.util.Map;

public class MyExcel {

	static Map map = new HashMap();
	static {
		for (int i = 1; i <= 26; i++) {
			char letter = (char) (64 + i);
			map.put(i, letter);
		}
	}

	public static void main(String[] args) {
		for (int i = 1; i < 30000; i++) {

			String a = test(i);
			System.out.println(i + "--" + a);
		}
	}

	private static String test(int data) {
		int shang = data / 26;
		int mod = data % 26;

		if (mod == 0) {
			shang = (data - 1) / 26;
			mod = (data - 1) % 26 + 1;
		}

		if (shang > 26) {
			return test(shang)+map.get(mod);
		} else {
			StringBuffer sb = new StringBuffer();
			//  0 , 
			if (shang > 0) {
				sb.append(map.get(shang));
			}
			sb.append(String.valueOf(map.get(mod)));
			return sb.toString();

		}

	}

}

出力結果:1-A 2-B 3-C 4-D 5-E 6-F 7-G 8-H 9-I 10--J 11-K 12-L 13--M 14-N 15-O 16--P 17-Q 18--R 19-S 20-T 21--U 22--V 23--W 24--X 25--Y 26--Z 27--AA 28--AB 29--AC 30-A 31--AE 32--AF 33--AG…701--ZY702--ZZ703--AAA704--AAB705--AAC706--AAD707--AAE708--AAF709--AAG....18276--ZZX18277--ZZY18278--ZZZ18279--AAAA18280--AAAB18281--AAAC
 
この問題も非常に古典的な面接問題です.