168. Excel Sheet Column Title
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
...
Example 1:
Input: columnNumber = 1
Output: "A"
Example 2:
Input: columnNumber = 28
Output: "AB"
Example 3:
Input: columnNumber = 701
Output: "ZY"
Constraints:
- 1 < = c o l u m n N u m b e r < = 2 31 − 1 1 <= columnNumber <= 2^{31} - 1 1<=columnNumber<=231−1
From: LeetCode
Link: 168. Excel Sheet Column Title
Solution:
Ideas:
1. Memory Allocation: We allocate memory for the result string. Since column numbers are large, we assume a reasonable size (8 characters) to cover most cases.
2. Loop through the column number: While columnNumber is greater than 0:
- Decrement columnNumber by 1 to shift it to a 0-based index.
- Compute the remainder when columnNumber is divided by 26. This gives us the position in the alphabet.
- Convert this remainder to the corresponding character by adding it to the ASCII value of 'A'.
- Store the character in the result array and increment the index.
- Update columnNumber by integer division by 26.
3. String Reversal: After forming the result, the string is reversed because characters are added from the least significant digit to the most significant digit.
4. Return the Result: The result is returned after null-terminating it.
Code:
c
char* convertToTitle(int columnNumber) {
char* result = (char*)malloc(8 * sizeof(char)); // Allocate memory for the result
int index = 0;
while (columnNumber > 0) {
columnNumber--; // Adjust to 0-indexed
int remainder = columnNumber % 26;
result[index++] = 'A' + remainder;
columnNumber /= 26;
}
result[index] = '\0'; // Null-terminate the string
// Reverse the string
int len = strlen(result);
for (int i = 0; i < len / 2; i++) {
char temp = result[i];
result[i] = result[len - 1 - i];
result[len - 1 - i] = temp;
}
return result;
}