数字转为26进制的字母

作者: SweetBecca | 来源:发表于2016-07-29 00:44 被阅读478次

今日碎碎念:

今天没啥大事就不念叨了,默默的等明天回家家~

数字如何转为26进制的字母?

此题与上一篇的相映的。

168.Excel Sheet Column Title

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

贴上电脑写的一次性AC的代码:

其中有一个坑一个怪兽:

  1. n % 26的时候,当结果为0时,应该是26代替0,且少进一位。需要特别处理。如果不是测试数据恰巧有Z的情况,我还发现不了呢。第二次提及:%运算为0的情况要重点考虑!!!
  2. string ans; ans[i] = num[i - 1] + 'A' - 1;的时候,输出ans的值是空,长度是0。这是为何呢?有明白的吗?
class Solution {
public:
    string convertToTitle(int n) {
        int num[100];//存26进制结果
        int i = 0;//num的角标
        int len; //num的长度
        string ans;
        char a;
        
        //化成26进制的int数组(倒序的)
        while( n > 0 ){
            if(n % 26){
                num[i] = n % 26;
                n = n / 26;
            }
            else{ //如果可以整除26,整除后结果不应该是0,应该是26的Z。同时少进位。
                num[i] = 26;
                n = n / 26 - 1;
            }
            i++;
        }
        len = i;
        //倒序给结果string赋值。为何不能直接把字符付给ans[i]呢?
        for(int j = 0; j < len; j++){
            a = num[i - 1] + 'A' - 1;
            ans += a;
            i--;
        }
        return ans;
    }
};

Tonight, 买了一堆垃圾食品等着明天上车吃,省的吃泡面的人用气味馋我~
——End——

相关文章

网友评论

    本文标题:数字转为26进制的字母

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