leetcode之Excle列表名称

给你一个整数 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"

整体思路:

实不相瞒,刷了几套题目前为止脑子里还是没找到思路,看到这个题还是很迷茫,不知道怎么入手,看了人家的讲解才发现好嘛,又是一道很简单的题!话不读说,上思路

AA=27=26^1+26^0

就这么一个小式子就能看出端倪了吧。这不就是26进制吗。(如果能发现这个这个题很简单,如果找了半天也想不到这,脑子只能一团浆糊了)

代码题解:

class Solution {
public:
    string convertToTitle(int columnNumber) {
    char a[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N'
    ,'O','P','Q','R','S','T','U','V','W','X','Y','Z'};//数组从0开始,后边的都从自动减1
    string res;
    while(columnNumber)
    {
        columnNumber--;//先减1再运算
        res=a[columnNumber%26]+res;
        columnNumber=columnNumber/26;
    }
    return res;
    }
};
//例:AA=27
//while(27)
//{
//columnNumber--;(26)
//res=a[0]+res=a[0]='A';
//columnNumber=1;
//}
//1继续循环
//columnNmuber=0;
//res=a[0]=‘A’;
//res='AA';
//columnNumber=0/26=0;停止循环

趁着热乎来下一个类似的题

leetcode之Excle表列序号

给定一个Excel表格中的列名称,返回其相应的列序号。

例如,

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

示例1:

输入: "A"
输出: 1

示例2:

输入: "AB"
输出: 28

示例3:

输入: "ZY"
输出: 701

整体思路:

与上边相反,26进制转10进制,用到幂函数pow(26,n);

代码题解:

class Solution {
public:
    int titleToNumber(string columnTitle) {
        int sum=0;
        int n=columnTitle.size()-1;
        for(int i=0;i<columnTitle.size();i++)
        {
            int temp=pow(26,n)*(columnTitle[i]-'A'+1);
            sum+=temp;
            n--;
        }
        return sum;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值