随笔 - 384  文章 - 0  评论 - 0  阅读 - 13万

力扣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   我不想一直当菜鸟  阅读(211)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 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 31 1 2 3 4 5

点击右上角即可分享
微信分享提示