题目如下:
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
分析如下:
注意是转换是从1开始计数的,不是从0开始的,所以不是直接地做26进制转换那么简单,需要中间做一些变换。试了几次, 比如 26 - Z, 52->AZ,试出了正确的代码。和这道题目互逆。
我的代码:
class Solution {
public:
string convertToTitle(int n) {
string array[26] = {"A", "B", "C", "D", "E", "F" , "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
string result = "";
string each_digit = "";
while (n > 0) {
int digit = n%26;
if (digit == 0) digit = 26;
each_digit = array[digit - 1];
result = each_digit + result;
n = (n - 1)/26; //n需要减去1, 否则输入26,输出就会错为AZ.
}
return result;
}
};