一、题目:二叉树寻路
1. 描述
给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回该列名称对应的列序号。
例如,
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
2. 提示和要求
- 1 <= columnTitle.length <= 7
- columnTitle 仅由大写英文组成
- columnTitle 在范围 [“A”, “FXSHRXW”] 内
3. 示例
- 示例一
输入: columnTitle = "A"
输出: 1
- 示例二
输入: columnTitle = "AB"
输出: 28
- 示例三
输入: columnTitle = "ZY"
输出: 701
- 示例四
输入: columnTitle = "FXSHRXW"
输出: 2147483647
二、解题
1. 思路
- 如何对应 A-Z 取到1-26:A的ASCII码是65, a的ASCII码是97,ASCII码表中,小写字母排在大写字母的后面,一个字母的大小写数值相差32。
- 如何取到
String columnTitle
每一位:charAt()
方法 - 关键:该题可以看作是26进制的转换成10进制问题。
2. 代码
class Solution {
public int titleToNumber(String columnTitle) {
int n = columnTitle.length();
int sum=0;int k=0;
for(int i=n-1;i>=0;i--){
sum += (columnTitle.charAt(i)-64)*Math.pow(26,k++);
}
return sum;
}
}