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;}
};
基本思路是一样的。