You are given a positive integer columnNumber, and you must return its corresponding Excel column title.
Excel columns work like this:
1 → A
2 → B
3 → C
…
26 → Z
27 → AA
28 → AB
…
52 → AZ
53 → BA
…
This is essentially a base-26 conversion, but with a twist:
There is no zero, and Excel uses 1–26 instead of 0–25.
Understanding the Problem
Excel column letters behave like an alphabetic numbering system.
Comparison to base-26:
Digits: A → 1, B → 2, …, Z → 26
But in typical base-26:
Digits: A → 0, B → 1, …, Z → 25
So Excel behaves like:
(columnNumber – 1) converted to base-26, using A=0 instead of A=1.
This means:
To find the last character:
Take (columnNumber – 1) % 26
Add ‘A’
Then reduce columnNumber = (columnNumber – 1) / 26
Repeat until columnNumber becomes 0.
Approach (Explained in Simple Language)
This is similar to converting a number to a base-26 string.
Steps:
Step 1: While columnNumber > 0
Decrease columnNumber by 1
This shifts Excel’s 1–26 range into 0–25 range.
Step 2: Find the last character
char = (columnNumber % 26) + ‘A’
Step 3: Append the character
But append at the end because we are building the string backwards.
Step 4: Divide columnNumber by 26
columnNumber /= 26
Step 5: Reverse the final string
This generates correct Excel column names.
Java Code
public class ExcelSheetColumnTitle {
public String convertToTitle(int columnNumber) {
StringBuilder result = new StringBuilder();
while (columnNumber > 0) {
columnNumber--;
int remainder = columnNumber % 26;
result.append((char) ('A' + remainder));
columnNumber /= 26;
}
return result.reverse().toString();
}
public static void main(String[] args) {
ExcelSheetColumnTitle sol = new ExcelSheetColumnTitle();
System.out.println(sol.convertToTitle(701)); // Expected: ZY
}
}
Dry Run
Let’s dry run for several inputs.
Example 1
Input: 1 → Output: A
columnNumber = 1
Subtract 1 → 0
remainder = 0 % 26 = 0 → ‘A’
Append → “A”
columnNumber = 0
Reverse → “A”
Example 2
Input: 28
Output should be: AB
columnNumber = 28
Iteration 1:
columnNumber– → 27
remainder = 27 % 26 = 1 → ‘B’
append ‘B’
columnNumber = 27 / 26 = 1
Iteration 2:
columnNumber– → 0
remainder = 0 % 26 = 0 → ‘A’
append ‘A’
columnNumber = 0
String so far = “BA”
Reverse → “AB”
Example 3
Input: 701
Expected: ZY
Column mapping:
701 → ZY (since 701 = 26*27 – 1)
Walk through:
columnNumber = 701
Iteration 1:
columnNumber– = 700
remainder = 700 % 26 = 24 → ‘Y’
append ‘Y’
columnNumber = 700 / 26 = 26
Iteration 2:
columnNumber– = 25
remainder = 25 % 26 = 25 → ‘Z’
append ‘Z’
columnNumber = 25 / 26 = 0
String = “YZ”
Reverse → “ZY”
Correct.
Why This Approach Works
Excel does not use zero in its system:
A (1), not (0)
Z (26)
AA (27)
To adapt standard base-26 conversion:
Shift by subtracting 1
Use remainder and division
Build string in reverse order
This maps numbers exactly to Excel column titles.
