LeetCode 168. Excel Sheet Column

2018-11-23  本文已影响8人  njim3

题目

Given a positive integer, return its corresponding column title as appear in an Excel sheet.

For example:

1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB 
...

Example 1:

Input: 1
Output: "A"

Example 2:

Input: 28
Output: "AB"

Example 3:

Input: 701
Output: "ZY"

解析

本题最终考察的是进制的转换,1-26为一组数据,但是是从1开始,应该从0开始才对,因为对于10进制来说,0-9是一组数。因此需要注意的是,在进行做取余和除法运算的时候,需要先将n-1,然后再进行运算,这样比较简单。

代码(C语言)

char *convertToTitle(int n) {
    char* str1 = (char*)malloc(sizeof(char) * 255);
    char* str2 = (char*)malloc(sizeof(char) * 255);
    
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wsizeof-array-argument"
#pragma clang diagnostic ignored "-Wsizeof-pointer-memaccess"
    memset(str1, '\0', sizeof(str1));
    memset(str2, '\0', sizeof(str2));
#pragma clang diagnostic pop
    
    int count = 0;
    
    while (n > 0) {
        n = n - 1;    // 将n-1
        
        *(str1 + count) = (n % 26) + 'A';    // n对26取余的结果再加上'A'便把那个1抵消了
        ++count;
        
        n = n / 26;    // 根据商数进行下一次的循环
    }
    
    for (int i = 0; i < strlen(str1); ++i) {
        *(str2 + i) = *(str1 + strlen(str1) - i - 1);
    }
    
    free(str1);
    
    return str2;
}
上一篇下一篇

猜你喜欢

热点阅读