列表

详情


NC336. Excel列名称

描述


excel列序号与列名称的映射关系是:
1->A
2->B
...
27->AA
28->AB
...

数据范围:

示例1

输入:

5

输出:

"E"

示例2

输入:

29

输出:

"AC"

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 3ms, 内存消耗: 392KB, 提交时间: 2022-08-02

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return string字符串
     */
    string ExcelTitle(int n) {
        string res;
        while(n){
            n--;
            char now = 'A' + (n%26) ;
            res = now + res;
            n = n/26;
            
        }
        return res;
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 392KB, 提交时间: 2022-04-30

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return string字符串
     */
    string ExcelTitle(int n) {
        // write code here
        vector<char> tmp;

        while(n)
        {
            if(n%26 != 0 )
            {
                tmp.push_back(n%26 + 64);            
                n /= 26;
            }
            else
            {
                tmp.push_back('Z');
                n = n/26-1;
            }
        }
        
        return string(tmp.rbegin(), tmp.rend());
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 400KB, 提交时间: 2022-05-26

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return string字符串
     */
    string ExcelTitle(int n) {
        // write code here
        string result;
        //n-=1;
        while(n){
            n-=1;
            int t=n%26;
            n/=26;
            result+=t+'A';
        }
        reverse(result.begin(),result.end());
        return result;
    }
};

C++ 解法, 执行用时: 3ms, 内存消耗: 404KB, 提交时间: 2022-05-25

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return string字符串
     */
    string ExcelTitle(int n) {
        // write code here
        string res;
        while(n){
            int mid = n%26;
            if(mid!=0){
                char tmp = 'A'+mid-1;
                res+=tmp;
                n = n/26;
            }else{
                res+='Z';
                n = n/26-1;
            }

        }
        reverse(res.begin(), res.end());
        return res;
    }
};

C 解法, 执行用时: 3ms, 内存消耗: 408KB, 提交时间: 2022-06-17

/* Excel列名称
1->A
2->B
...
27->AA
28->AB
...
*/

char* ExcelTitle(int n ) {
    char* res = malloc(sizeof(char) * 4);
    int i = 2;
    while (n > 0) {
        n--;
        res[i] = n % 26 + 'A';
        i--;
        n = n / 26;
    }
    return &res[i + 1];
}

上一题