給定一個(gè)Excel表格中的列名稱悔据,返回其相應(yīng)的列序號衬廷。
例如穿稳,
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的意思抱婉,而且是從左進(jìn)行遍歷宇整。
我們在進(jìn)行進(jìn)制轉(zhuǎn)換的時(shí)候比如 ABZ
首先是
所以在這題中我們先對字符進(jìn)行遍歷瓶佳,拿到第一個(gè)字母的時(shí)候因?yàn)槲覀兪堑某朔蕉际俏粩?shù)減1的所以開始的時(shí)候從零開始。
遍歷時(shí)將每個(gè)字母與A做減法鳞青,因?yàn)锳表示1霸饲,所以減法后需要每個(gè)數(shù)加1,計(jì)算其代表的數(shù)值num = 字母 - ‘A’ + 1
之后再進(jìn)行遍歷的時(shí)候需要對上邊這個(gè)num乘上26臂拓,知道最后一直進(jìn)行乘26 的操作厚脉,這樣他的乘方數(shù)就能比字母數(shù)少一,以此類推都是一樣的胶惰。這樣就完成了轉(zhuǎn)換傻工。