1、題目描述
給定一個正整數,返回它在 Excel 表中相對應的列名稱。
例如,
1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB
...
2、示例
輸入: 701
輸出: "ZY"
3、題解
基本思想:數學,關鍵的一步就是先將n-1,這樣使得Excel表計數從0開始,然後記得每次q/26得到的商要減一,這是因爲1-26是一個字母,而27開始是兩個字母開始計數27/26=1但是從A開始,之前不能算。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
class Solution {
public:
string convertToTitle(int n) {
//基本思想:數學,關鍵的一步就是先將n-1,這樣使得Excel表計數從0開始
//然後記得每次q/26得到的商要減一,這是因爲1-26是一個字母,而27開始是兩個字母開始計數27/26=1但是從A開始,之前不算
string res;
int q, r;
q = n - 1;
while (q >= 0)
{
r = q % 26;
char ch = static_cast<char>('A' + r);
res.push_back(ch);
q = q / 26;
q--;
}
reverse(res.begin(), res.end());
return res;
}
};
int main()
{
Solution solute;
int n = 53;
cout << solute.convertToTitle(n) << endl;
return 0;
}