题目描述
- Excel表列名称
给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
例如:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例 1:
输入:columnNumber = 1
输出:“A”
示例 2:
输入:columnNumber = 28
输出:“AB”
示例 3:
输入:columnNumber = 701
输出:“ZY”
示例 4:
输入:columnNumber = 2147483647
输出:“FXSHRXW”
提示:
1 <= columnNumber <= 2^31 - 1
题解 1 :
思路 :
类似于二进制的那种满二进一,结尾的字符通过取模获取 ,一次循环后通过除26 去进位,最后把字符串反转再返回,需要注意在边界那儿的处理 ,然后就有了低配版的26句万恶'case'
(面向 CV 编程) , 代码过于草率…hhhhhhhhhhhh
代码 :
class Solution {
public String convertToTitle(int columnNumber) {
StringBuilder ch = new StringBuilder();
while (columnNumber > 0){
int x = columnNumber % 26;
switch (x){
case 0:
ch.append('Z');
columnNumber -= 26;
break;
case 1:
ch.append('A');
break;
case 2:
ch.append('B');
break;
case 3:
ch.append('C');
break;
case 4:
ch.append('D');
break;
case 5:
ch.append('E');
break;
case 6:
ch.append('F');
break;
case 7:
ch.append('G');
break;
case 8:
ch.append('H');
break;
case 9:
ch.append('I');
break;
case 10:
ch.append('J');
break;
case 11:
ch.append('K');
break;
case 12:
ch.append('L');
break;
case 13:
ch.append('M');
break;
case 14:
ch.append('N');
break;
case 15:
ch.append('O');
break;
case 16:
ch.append('P');
break;
case 17:
ch.append('Q');
break;
case 18:
ch.append('R');
break;
case 19:
ch.append('S');
break;
case 20:
ch.append('T');
break;
case 21:
ch.append('U');
break;
case 22:
ch.append('V');
break;
case 23:
ch.append('W');
break;
case 24:
ch.append('X');
break;
case 25:
ch.append('Y');
}
columnNumber /= 26;
}
return String.valueOf(ch.reverse());
}
}
运行截图 :
题解 2 :
思路 :
在题解一的基础上使用ASCII 码,简化了代码 ,思路类似题解一
代码 :
class Solution {
public String convertToTitle(int columnNumber) {
StringBuilder s = new StringBuilder();
while (columnNumber > 0) {
columnNumber--;
s.append((char)(columnNumber % 26 + 'A'));
columnNumber /= 26;
}
return String.valueOf(s.reverse());
}
}