Difficulty: Easy | Acceptance: 46.40% | Paid: No Topics: Math, String
Given an integer columnNumber, return its corresponding column title as it appears in an Excel sheet.
For example:
A -> 1 B -> 2 C -> 3 … Z -> 26 AA -> 27 AB -> 28 …
- Examples
- Constraints
- Iterative Base-26 Conversion
- Recursive Base-26 Conversion
Examples
Example 1:
Input: columnNumber = 1
Output: "A"
Example 2:
Input: columnNumber = 28
Output: "AB"
Example 3:
Input: columnNumber = 701
Output: "ZY"
Constraints
1 <= columnNumber <= 2³¹ - 1
Iterative Base-26 Conversion
Intuition This is a modified base-26 conversion problem where digits are 1-26 (A-Z) instead of 0-25. We repeatedly divide by 26, adjusting for the 1-indexed system.
Steps
- While columnNumber > 0:
- Decrement columnNumber by 1 (to convert from 1-indexed to 0-indexed)
- Get remainder = columnNumber % 26
- Prepend the corresponding letter (0 -> A, 1 -> B, …, 25 -> Z)
- Divide columnNumber by 26
python
class Solution:
def convertToTitle(self, columnNumber: int) -> str:
result = []
while columnNumber > 0:
columnNumber -= 1
remainder = columnNumber % 26
result.append(chr(ord('A') + remainder))
columnNumber //= 26
return ''.join(reversed(result))Complexity
- Time: O(log₂₆(n)) - We divide by 26 in each iteration
- Space: O(log₂₆(n)) - To store the result string
- Notes: This is the most efficient approach with optimal time and space complexity.
Recursive Base-26 Conversion
Intuition Same mathematical approach as the iterative solution, but implemented using recursion for cleaner code structure.
Steps
- Base case: if columnNumber is 0, return empty string
- Decrement columnNumber by 1
- Get remainder = columnNumber % 26
- Recursively solve for columnNumber / 26 and append the current letter
python
class Solution:
def convertToTitle(self, columnNumber: int) -> str:
if columnNumber == 0:
return ''
columnNumber -= 1
return self.convertToTitle(columnNumber // 26) + chr(ord('A') + columnNumber % 26)Complexity
- Time: O(log₂₆(n)) - Same as iterative approach
- Space: O(log₂₆(n)) - Recursion stack depth plus result string
- Notes: Cleaner code but uses recursion stack space; iterative approach is preferred for very large inputs.