[E进位制] lc168. Excel表列名称(进位制+进制转换)

Posted Ypuyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[E进位制] lc168. Excel表列名称(进位制+进制转换)相关的知识,希望对你有一定的参考价值。

1. 题目来源

链接:168. Excel表列名称

相关:[E进位制] lc171. Excel表列序号(进位制+进制转换) 互为逆运算,但本题更加难一些。

2. 题目解析

这个进制转换有点意思。

朴素的 k 进制转换的话,k 进制中的数都是 [0,k) 范围内的,而在本题中为 26 进制,数的范围是从 [1,26],也就是说:

  • %26 得到最低位的操作每次会多一位,因为 %26 后取值范围为 [0,25],而本题范围为 [1,26]
  • 同时,/26 也不能将最低位消去,有 26/26=1。**

对此,每次只需要先让 n 减去 1 就行了,转化为正常的 26 进制。

也可以理解成,每次的 %26/26 操作取得最低位都是独立的,每次对 n-- 都可以将这一位转化为正常的 26 进制。


时间复杂度: O ( l o g n ) O(logn) O(logn)
空间复杂度: O ( n ) O(n) O(n)


class Solution {
public:
    string convertToTitle(int columnNumber) {
        string res;
        while (columnNumber) {
            columnNumber -- ;
            int t = columnNumber % 26;
            res += t + 'A';
            columnNumber /= 26;
        }
        reverse(res.begin(), res.end());

        return res;
    }
};

以上是关于[E进位制] lc168. Excel表列名称(进位制+进制转换)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 168. Excel表列名称

LeetCode--168--Excel表列名称

168. Excel表列名称

168.Excel Sheet Column Title Excel表列名称

168. Excel表列名称

LeetCode第168题—Excel表列名称—Python实现