[E进位制] lc168. Excel表列名称(进位制+进制转换)
Posted Ypuyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[E进位制] lc168. Excel表列名称(进位制+进制转换)相关的知识,希望对你有一定的参考价值。
1. 题目来源
相关:[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表列名称(进位制+进制转换)的主要内容,如果未能解决你的问题,请参考以下文章