给你一个字符串 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
解题思路:从示例中可以看出,最后一位为26个英文字母的位置,A是第一位,B是第二位,倒数第二个字母为26进制的意思,A是进位1,得到的就是26,B是进位2,得到26*2,看示例3进行验证26*26+25=701,验证通过,开始写代码。
class Solution {
public:
int titleToNumber(string columnTitle) {
int ret = 0;
std::string::iterator it = columnTitle.begin();
while(it!=columnTitle.end())
{
ret = (*it-'A'+1)+ ret*26;
it++;
}
return ret;
}
};
代码思路很简单,就是直接从头开始遍历,直到为'\0'。从第一个字母开始,如果后面还有字母的话,就让前面的总数乘以进制,然后再加上后一位的数值,这样得到的就是总数了。