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;
    }
}

解答技巧

  1. 将该问题转换为 进制转换 问题。即实际上,列名称 对应 列序号 ==> 26进制数 对应 10进制数
  2. 因此将该问题转换为 将 26进制的数转换为10进制的数的问题。关于为什么是乘以26?为什么是26进制?不是27?
    我们平时说 0-9再往上就进1变成10(0-9是10个数),因此是10进制,
    现在是 A-Z再往上就进1变成AA(A-Z是26个字母),因此是26进制,自然要乘以26
  3. 已知一个数字集合【3,5,4,5,7,1,4】,怎么将它变成3545714?
    方法就是使用循环,每一步都加上前一步的值再乘以10,最后一个“4”不需要乘10。这道题实际上原理也是如此,只是将乘10变成了乘26(因为题目是26进制)。
  4. 还有考察到的一个是ASCII值,因为大写字母的ASCII是连续的,A对应65,因此要减掉64,其他字母相同。

以上是关于LeetCode171. Excel 表列序号的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode171. Excel 表列序号(C++)

LeetCode 171 Excel表列序号[进制转换] HERODING的LeetCode之路

LeetCode171. Excel 表列序号

leetcode算法171.Excel 表列序号

每日一题之LeetCode 171excel表列序号

LeetCode 815. 公交路线 / 909. 蛇梯棋(还是bfs)/ 168. Excel表列名称 / 171. Excel表列序号