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(); } }
|