Given a positive integer, return its corresponding column title as appear in an Excel sheet.
For example:
<pre>
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
</pre>
解题思路
这道题是171的逆向问题,但是个人感觉比171要难一些。
之前由171题分析可知,此题类似于“26进制”。但是与一般n进制不同的是,该“26进制”没有0(没有字母能代表0),却有26(相当于n进制中的n)。所以我们在做进制转换的时候,如果遇到模除为0的情况,可以考虑向前面“借”一位,将0变为26(也就是把‘A’变成‘Z’),其他情况与一般进制转换相同。
代码
class Solution {
public:
string convertToTitle(int n) {
string res = "";
while (n>0){
int x = n%26;
if (x == 0){
res += 'Z'; n = n-26;//向前面借一位
}else{
res += exchange(x);
}
n /= 26;
}
int len = res.length();
for (int i=0;i<len/2;i++){
swap(res[i],res[len-i-1]);
}
return res;
}
char exchange(int x){
return 'A'+x-1;
}
};
网友评论