题目
给定一个正整数,返回它在 Excel 表中相对应的列名称。
例如,
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...
示例 1:
输入: 1
输出: "A"
示例 2:
输入: 28
输出: "AB"
示例 3:
输入: 701
输出: "ZY"
思路
- 类比10进制:10进制一轮有10个数,但是0-9
- 我们这题是26进制,题目的意思是1-26对应A-Z,我们要想办法转换成0-25对应A-Z
- 所以在每次计算之前将n减去1,即可
代码
class Solution {
public String convertToTitle(int n) {
String res = "";
while(n>0){
n--;
res = String.valueOf((char)(n%26+'A')) + res;
n = n/26;
}
return res;
}
}
拓展
- char转换成int(自动):
int n = 'a';
, 得到的是字符的ASCII码 - int转换成char(强制):
char c = (char)('a' + 12);
,char会自动降为int,和12进行加法运算,得到一个int值,但是int值要强制转换成char - String转换成char:
char[] c = str.toCharArray();
,得到字符串数组 - char转换成String:
String str = String.vauleOf(c);