题目来源
题目描述
题目解析
26进制转10进制
- 初始化结果ans = 0,遍历时将每个字母与A做减法,因为A表示1,所以减法后需要每个数加1,计算其代表的数值num = 字母 - ‘A’ + 1
- 因为有26个字母,所以相当于26进制,每26个数则向前进一位
所以每遍历一位则ans = ans * 26 + num - 以ZY为例,Z的值为26,Y的值为25,则结果为26 * 26 + 25=701
时间复杂度:O(n)
public static int titleToNumber(String s) {
int sum = 0;
for (int i = 0; i < s.length(); i++){
sum = sum * 26 + (s.charAt(i) - 'A' + 1);
}
return sum;
}