leetcode_168_Excel_Sheet_Column_Title

给定一个正整数,返回它在 Excel 表中相对应的列名称。

例如,

1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB 
...

示例 1:

输入: 1
输出: “A”

示例 2:

输入: 28
输出: “AB”

示例 3:

输入: 701
输出: “ZY”

解题思路:

把这个问题想象成是求26进制问题.

  • 1.拆分成>26(继续做求余求商操作)和<26(直接转成符号)两种情况处理
  • 2.>26时不停做 while 循环,每次求余的部分即添加到 sb 中,直到将 n 控制在<26时将 n 也添加进 sb 中
  • 3.最后做反转操作并变成 String
show me the code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution {
public String convertToTitle(int n) {
// 创建整形变量 m 待用
int m;
// 创建 StringBuffer 变量待用
StringBuffer sb = new StringBuffer();
// while 循环,不停地做%26和/26操作
while(n > 26){
// 如果n%26==0,说明是含有"Z"
if(n % 26 == 0){
// 此时需要确定"Z"前面是什么,即 n 是什么
n = n / 26 - 1;
// 现在 sb 中添加上"Z"
sb.append('Z');
}else{
// 第二种情况:n 不能被26整除
// m 为组成部分后面的部分
m = n % 26;
// n 为组成部分前面的部分
n = n / 26;
// 将 m 添加到 sb 中
sb.append((char)(m + 64));
}
}
// 把 n 添加到 sb 中(对所有情况而言)
sb.append((char)(n + 64));
// 将 sb 翻转,并转成 String 格式
return sb.reverse().toString();
}
}