大致题意:
给出Excel列的标题,诸如:A, B, C … AA, AB … BA…
其中每一个列对应的数字为:1, 2, 3 … 27, 28 … 53…
我们要做的就是给出对应的列名,返回对应的数字。
思路
就像是26进制转十进制。
- 从尾至首遍历列名,将当前字母减去 ‘A’再加 1,然后乘上当前对应的基数
- 基数初始为1,每次乘上26
代码:
public int titleToNumber(String columnTitle) {
int num = 0;
int base = 1; // 基数
for (int i = columnTitle.length() - 1; i >= 0; i--) {
char ch = columnTitle.charAt(i);
num += (ch - 'A' + 1) * base; // 当前对应的数
base *= 26;
}
return num;
}