美文网首页
LeetCode 168. Excel Sheet Column

LeetCode 168. Excel Sheet Column

作者: njim3 | 来源:发表于2018-11-23 22:26 被阅读8次

    题目

    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;
    }
    

    相关文章

      网友评论

          本文标题:LeetCode 168. Excel Sheet Column

          本文链接:https://www.haomeiwen.com/subject/wtwsqqtx.html