168Excel表列名稱(數學)

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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章