Solution 1
实际上就是类似将数字转为对应字符串的题,区别在于两点:
- 26进制,这个没有问题
- 余数方面,索引范围是1~26,因此需要提前减1方便确定余数
- 时间复杂度: O ( log 26 c o l u m n N u m b e r ) O(\log_{26} columnNumber) O(log26columnNumber),这个没什么说的
- 空间复杂度: O ( 1 ) O(1) O(1),这里想表达除了结果之外仅维护常数个状态量,但是实际复杂度需要考虑字符串的实现
class Solution {
public:
string convertToTitle(int columnNumber) {
string ans;
while (columnNumber > 0) {
columnNumber --; // 处理余数
char temp = (columnNumber % 26) + 'A';
ans = temp + ans;
columnNumber /= 26;
}
return ans;
}
};
Solution 2
Solution 1的Python实现
class Solution:
def convertToTitle(self, columnNumber: int) -> str:
ans = ""
while columnNumber > 0:
columnNumber -= 1
temp = chr(columnNumber % 26 + ord("A"))
ans = temp + ans
columnNumber //= 26
return ans