力扣第168题“Excel表列名称”的解题思路

参考代码:

class Solution {
    public  string convertToTitle(int columnNumber) {
        string result;


        while(columnNumber>0)
        {
            int current=(columnNumber-1)%26;
            columnNumber=(columnNumber-1)/26;
            char character;

            character='A'+current;
            result=character+result;
        }
        return result;
    }
}

大致思路: 

1对应A,26对应Z, 看起来像是27进位,似乎应该每次余27,每次除以27。

但是,因为1对应A,而27对应的也是A, 1%27=1, 27%27=0, 同一个A余数不同,构成矛盾。'/那么除以26行不行?

1%26=1,27%26=1,看起来这样似乎可以保持一致。

但是当26%26的时候,为0,可是实际的值却为z,又构成了新的矛盾。

所以,我们调整对应关系,让o对应A,25对应z, 26对应AA, 这样就构成了一一个正常的26进位。

这样对于A: 0%26=0, 对于AA: 26%26=0, 在余数这里可以保持一致。

新的对应关系是原先对应关系-1得到,所以在每次操作的时候, 都要让columnNumber-1, 得到新的对应关系。

值得注意的是可以先创建一个String result来将每一个字母串在一起,需要用到char强制类型转换。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值