题目
给定一个Excel表格中的列名称,返回其相应的列序号。
例如,
A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1:
输入: "A" 输出: 1示例 2:
输入: "AB" 输出: 28示例 3:
输入: "ZY" 输出: 701致谢:
特别感谢 @ts 添加此问题并创建所有测试用例。
解题思路
1)将字符串遍历
2)将遍历到的每个字符通过公式处理获得正确的值。
3) 公式: 数值 = (元素 - 'A' + 1) * 26的位数 次方。 个位0次方、十位1次方、百位2次方......
代码实现
class Solution {
public int titleToNumber(String s) {
// 1、遍历字符串每个字符将每个字符转化为整数值
// 1)处理字符串去除 " 和 \
int re = 0; // 返回的值
s = s.replaceAll("\"", "").replaceAll("\\\\", "");
int len = s.length();
System.out.println("s==>" + s);
// 2)遍历字符串
for (int i = 0; i < len ; i++) {
char c = s.charAt(len - 1- i); // i = len - 1 - 1 =》 字符在个位, i = len - 1 - 2 =》字符在十位 ...
// 3)将每个字符转化为整数值
int curreVal = c - 'A' + 1; // 值
int xi = (int)Math.pow(26, i); // 系数
re = re + curreVal * xi ;
}
return re;
}
}