今日碎碎念:
今天没啥大事就不念叨了,默默的等明天回家家~
数字如何转为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的代码:
其中有一个坑一个怪兽:
-
n % 26
的时候,当结果为0时,应该是26代替0,且少进一位。需要特别处理。如果不是测试数据恰巧有Z的情况,我还发现不了呢。第二次提及:%运算为0的情况要重点考虑!!! -
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——