LeetCode No.168

本文深入探讨了将正整数转换为Excel列名称的算法实现,通过具体示例展示了如何使用除法和取余运算来映射数字到字母序列。特别关注了边界情况处理,如26、52等特殊数值的转换逻辑,确保了算法的正确性和完整性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

例如,

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

输入: 1
输出: "A"
示例 2:

输入: 28
输出: "AB"
示例 3:

输入: 701
输出: "ZY"

 

解题思路:构建map容器用于存储显示的字符。本题通过 number 除以26得到的 remainder,即得到最后一位的字符。然后将 quotient 赋值给 number,依次循环。

需要注意的是边界字符,即如 26、52之类。所以需要加一个判断条件,即当 quotient 大于0且 remainder 为0时,需要 quotient - 1,并且添加字符 Z

//168
string convertToTitle(int n)
{
    if(n<1) return "";
    map<short,char> m{
        {1,'A'},{2,'B'},{3,'C'},{4,'D'},{5,'E'},{6,'F'},{7,'G'},{8,'H'},{9,'I'},{10,'J'},
        {11,'K'},{12,'L'},{13,'M'},{14,'N'},{15,'O'},{16,'P'},{17,'Q'},{18,'R'},{19,'S'},{20,'T'},
        {21,'U'},{22,'V'},{23,'W'},{24,'X'},{25,'Y'},{26,'Z'}
    };
    string res;
    int quotient = n, reminder;
    while(quotient>0)
    {
        reminder=quotient%26;
        quotient=quotient/26;
        if(quotient>0 && reminder==0)
        {
            quotient -=1;
            res ='Z' + res;
        }
        else
            res =  m[reminder] + res;
    }
    return res;
}//168

 

转载于:https://www.cnblogs.com/2Bthebest1/p/11181869.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值