问题:
假设excel表 可以有无穷列,写一个算法获得第n 列的标头
String Gettitle(long n){
}
参照结果:Gettitle(1)=A //第1列为 A
Gettitle(2)=B //第2列为 B
...
Gettitle(26)=Z
Gettitle(27)=AA //第27列为 AA
...
Gettitle(100)=CV //第100列为 CV
...
Gettitle(999999999999999999)=JLKTWHMJDBNIM //第999999999999999999列为 JLKTWHMJDBNIM
方式和进制转换相似(10进制转26进制),不同点在于求余时,余数不能为0,余数改为和除数一样,商退一位
String gettitle(long n) { //前提 n>0
long m = 0; // 余数
String re = ""; // 结果字符串
while (n > 0) {
m = n % 26; // 余数
n /= 26;// 商
if (m == 0) { // 若余数为0 ,商-1,余数+26 例如:52/26=1.....26
m = 26;
n--;
}
re = (char) (m + 'A' - 1) + re;
}
return re;
}