LeetCode171. Excel 表列序号
Posted Jack·Kwok
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode171. Excel 表列序号相关的知识,希望对你有一定的参考价值。
题目
我的解答(已通过)
class Solution {
public int titleToNumber(String columnTitle) {
int sum = 0;
for(int i = 0;i<columnTitle.length()-1;i++){
sum = (sum + (columnTitle.charAt(i)-64))*26;
}
sum = sum + columnTitle.charAt(columnTitle.length()-1)-64;
return sum;
}
}
解答技巧
- 将该问题转换为 进制转换 问题。即实际上,列名称 对应 列序号 ==> 26进制数 对应 10进制数
- 因此将该问题转换为 将 26进制的数转换为10进制的数的问题。关于为什么是乘以26?为什么是26进制?不是27?
我们平时说 0-9再往上就进1变成10(0-9是10个数),因此是10进制,
现在是 A-Z再往上就进1变成AA(A-Z是26个字母),因此是26进制,自然要乘以26 - 已知一个数字集合【3,5,4,5,7,1,4】,怎么将它变成3545714?
方法就是使用循环,每一步都加上前一步的值再乘以10,最后一个“4”不需要乘10。这道题实际上原理也是如此,只是将乘10变成了乘26(因为题目是26进制)。 - 还有考察到的一个是ASCII值,因为大写字母的ASCII是连续的,A对应65,因此要减掉64,其他字母相同。
以上是关于LeetCode171. Excel 表列序号的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 171 Excel表列序号[进制转换] HERODING的LeetCode之路
LeetCode 815. 公交路线 / 909. 蛇梯棋(还是bfs)/ 168. Excel表列名称 / 171. Excel表列序号