给定一个Excel表格中的列名称,返回其相应的列序号。
例如,
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例 1:
输入: "A"
输出: 1
示例 2:
输入: "AB"
输出: 28
class Solution {
public:
int titleToNumber(string s) {
int res = 0;
for(char ch:s){
res = res * 26 + (ch - 'A' + 1);
}
return res;
}
};
for (char ch:s)
这是遍历字符串s的意思,而且是从左进行遍历。
我们在进行进制转换的时候比如 ABZ
首先是
所以在这题中我们先对字符进行遍历,拿到第一个字母的时候因为我们是的乘方都是位数减1的所以开始的时候从零开始。
遍历时将每个字母与A做减法,因为A表示1,所以减法后需要每个数加1,计算其代表的数值num = 字母 - ‘A’ + 1
之后再进行遍历的时候需要对上边这个num乘上26,知道最后一直进行乘26 的操作,这样他的乘方数就能比字母数少一,以此类推都是一样的。这样就完成了转换。
网友评论