171. Excel 表列序号
给你一个字符串 columnTitle
,表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。
例如:
A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...
示例 1:
输入: columnTitle = "A" 输出: 1
示例 2:
输入: columnTitle = "AB" 输出: 28
示例 3:
输入: columnTitle = "ZY" 输出: 701
提示:
1 <= columnTitle.length <= 7
columnTitle
仅由大写英文组成columnTitle
在范围["A", "FXSHRXW"]
内
有点奇怪,我现在都不知道我是怎么解出来的:但是我竟然超过了100%的用户。。。。
直接看代码:
class Solution {
public:
int titleToNumber(string columnTitle) {
int distance=int('A'-1);
int num=0;
int order=0;
for(char c:columnTitle)
{
num+=num*25+c-distance;
}
return num;
}
};
我现在都不明白为什么是乘以25而不是26。
明白了,基础知识的问题:num+=num*25+a,即num=num+num*25+a=num*26+a;当然可以这样写:
class Solution {
public:
int titleToNumber(string columnTitle) {
int num=0;
for(char c:columnTitle)
{
num=num*26+(c-'A'+1);
}
return num;
}
};
下面我们来看一看答案:
class Solution {
public:
int titleToNumber(string columnTitle)
{
const int change='A'-1;
int ans=0;
for(char&alt:columnTitle){
ans*=26;
ans+=alt-change;
}
return ans;
}
};
基本思路是一样的。