力扣168(java)-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 <= 231 - 1

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/excel-sheet-column-title
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

类比进制转换中的【除留余数法

十进制的余数:0~9

二进制的余数:0、1

二十六进制的余数:0~25

已知A~Z的映射值为1~26,需要将其映射到0~25,故需要将每一位映射值减1即可。

例如:

columnNumber = 701

第一轮:

columnNumber - 1== 700;
columnNumber % 26 == 24;
(char)('A' + columnNumber % 26) == (char) (65 +24 );   ==>  Y
sb.append(Y); columnNumber
/26 == 26;

第二轮:

columnNumber - 1== 25;
columnNumber % 26 == 25;
(char)('A' + columnNumber % 26) == (char) (65 +25 );   ==>  Z
sb.append(Z) columnNumber
/26 == 0;

columnNumber == 0 结束循环,结果为 YZ,返回结果就是 ZY。

代码:

 1 class Solution {
 2     public String convertToTitle(int columnNumber) {
 3         StringBuilder sb = new StringBuilder();
 4         while( columnNumber != 0){
 5             columnNumber--;
 6             sb.append((char)('A' + columnNumber % 26));
 7             columnNumber /= 26;
 8         }
 9         return sb.reverse().toString();
10     }
11 }

posted on 2022-08-07 22:09  我不想一直当菜鸟  阅读(193)  评论(0编辑  收藏  举报