LeetCode //C – 168. Excel Sheet Column Title

作者 : admin 本文共1559个字,预计阅读时间需要4分钟 发布时间: 2024-06-10 共4人阅读

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<=2311

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:
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] = '
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;
}
'
; // 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; }
本站无任何商业行为
个人在线分享 » LeetCode //C – 168. Excel Sheet Column Title
E-->