Table of Contents
Problem Statement
In this problem a positive integer is given which represents a column number of an Excel sheet, we have to return its corresponding column title as appear in an Excel sheet.
Example
#1
28
"AB"
#2
701
"ZY"
Approach
This problem is the reverse of the problem in which we have to find out the column number from a column title.
So in that problem we converted a base-26 number into base-10 number which is a decimal number. In this problem we have to find out column title from column number. So here we just have to do opposite, i.e. we have to convert a base-10 (decimal) number into a number of base-26 system.
We know in general number system of suppose base-26 should have 26 characters which represents values 0 to 25. But in Excel sheet column title this is little different. It represents values from 1 to 26. So if we use characters A-Z as 0-25, then it will look like below equation:
Let string be ABZ, this is corresponding to number n:
n = (A+1) * 26^2 + (B+1) * 26^1 + (Z+1) * 26^0
Why (A+1)? Because in char system ‘A’ is 0, but in excel system ‘A’ is one. Every char get an extra one.
So in order to get last char i.e. Z we would first minus 1 i.e. n– and then get n%26
(n-1)%26 = Z
Now divide with 26 and repeat same process for next character.
(n-1)/26 = (A+1) * 26^1 + (B+1) * 26^0
Algorithm
- Create an empty string for storing the characters.
- Run a loop while n is positive.
- Subtract 1 from n.
- Get current character by doing modulo of n by 26.
- Divide n by 26.
- Now reverse the result string because we have found characters from right to left.
- Return the reversed string.
Implementation
C++ Program for Excel Sheet Column Title Leetcode Solution
#include <bits/stdc++.h> using namespace std; string convertToTitle(int n) { string ans; while(n>0) { --n; int d= n%26; n/=26; ans+= 'A'+d; } reverse(ans.begin(),ans.end()); return ans; } int main() { cout<<convertToTitle(28) <<endl; return 0; }
AB
Java Program for Excel Sheet Column Title Leetcode Solution
class Rextester{ public static String convertToTitle(int n) { StringBuilder ans= new StringBuilder(); while(n>0) { --n; int d= n%26; n/=26; ans.append((char)('A'+d)); } ans.reverse(); return ans.toString(); } public static void main(String args[]) { System.out.println( convertToTitle(28) ) ; } }
AB
Complexity Analysis for Excel Sheet Column Title Leetcode Solution
Time Complexity
O(log(n)) : Where n is the given column number. We are dividing the number by 26 in each iteration, hence time complexity will be O(log(n)).
Space Complexity
O(1) : We are not using any extra space other than for storing the result.