Question
Given a positive integer, return its corresponding column title as appear in an Excel sheet.
For example:
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
Credits:
Special thanks to @ifanchu for adding this problem and creating all test cases.
Hide Tags Math
Analysis
This problem is to convert 1-26 to A-Z. Commonly, this kind of problem using ‘mod’ is in range [0,25].
The general equation is
where ai∈[1,26]
Each time we get the last digit by computing d=n%26. To convert it to be [0,25], we have to decrease the last digit of n by 1.
For example, after get d=a0−1, we do n = n/26, so we have
So by doing d=(n-1)%26, we get the number[0,25] for a1.
See solution v2
Solution
v1
The idea of this solution is to lend carry=1 to the lower digit if it is 26.
class Solution:
# @param {integer} n
# @return {string}
def convertToTitle(self, n):
res = []
if n<=0:
return res
while(n>0):
d = n%26
n = n/26
if d==0:
d = 26
n = n -1
res = [ str(unichr(d+64)) ] + res
return "".join(res)
v2
This is general solution
class Solution:
# @param {integer} n
# @return {string}
def convertToTitle(self, n):
res = []
if n<=0:
return res
while(n>0):
d = (n-1)%26
res = [ str(unichr(d+65)) ] + res
n = n/26
return "".join(res)