Excel Sheet Column Title

6 篇文章 0 订阅

Given a positive integer, return its corresponding column title as appear in an Excel sheet.

For example:

1 -> A
2 -> B
……
26 -> Z
27 -> AA
28 -> AB

Example1:

input: 1
output: “A”

Example2:

input : 34
output: “AH”

乍看有点简单,其实不然需要考虑高低位!
就是一位一位的求,此题从低位往高位求,最后用reverse函数把string的begin和end调转就可!
首先看简单的,对于小于26的数字,直接把它们对26取余,然后再减去1加上‘A’即可,但是对26来说,取余是0,所以要分开处理!
可以取余为0的,就是在res上直接加上‘Z’不用再减去1,之后再把n减去26,依次反复!
不能得话,一般化处理,先减去这个余数,再自减26!

class Solution {
public:
    /**
     * @param n: a integer
     * @return: return a string
     */
    string convertToTitle(int n) 
    {
        // write your code here
        string res = "";
        while(n)
        {
            if(n%26 == 0)
            {
                res += 'Z';
                n -= 26;
            }
            else
            {
                res += n%26 - 1 + 'A';
                n = n - n%26;
            }
            n /= 26;
        }
        reverse(res.begin(),res.end());
        return res;
    }
};

借鉴了大佬得做法!省略了if-else 直接让 n自减1 比如26,减去1还剩下25,那么’A’ + 25就是Z了!

class Solution {
public:
    /**
     * @param n: a integer
     * @return: return a string
     */
    string convertToTitle(int n) 
    {
        // write your code here
        string res = "";
        while(n)
        {
           res += (--n)%26 + 'A';
           n /= 26;
        }
        reverse(res.begin(),res.end());
        return res;
    }
};

参考资料:
添加链接描述
添加链接描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值