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