Excel表列名称(简单)
2020年5月19日
题目来源:力扣
解题
这道题,很明显就是利用字符数字的asall码来变成字符字母。
按照进制转换的题目去做,那就是十进制转换成二十六进制,这里我用了StringBuilder来存字符串,有两种方法可以得出最后的结果,用insert()方法把每次得到的字符插到字符串最前面;或者按顺序放,最后用reverse()方法反转。
做到这一步就有最后一个问题了,26对应的应该是Z,这里对26取余后是0,A+0-1并不能得到Z这个答案,所以当余数为0时,把余数改为26,再把n减去1,减1操作是为了把进制转换的0-25变成1-26,可自行体会。
class Solution {
public String convertToTitle(int n) {
StringBuilder sb=new StringBuilder();
while(n!=0){
int te=n%26;
if(te==0){
te=26;
n-=1;
}
sb.append((char)('A'+te-1));
n/=26;
}
return sb.reverse().toString();
}
}