【题目】
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
【分析】
Because any_pos_int mod 26
should return a number in the interval [0, 25]
, but what we want is a number in the interval [1, 26]
. Thus we have to shift the digit leftward by 1
which means--n
.
【代码】
/*********************************
* 日期:2015-01-29
* 作者:SJF0115
* 题目: 168.Excel Sheet Column Title
* 网址:https://oj.leetcode.com/problems/excel-sheet-column-title/
* 结果:AC
* 来源:LeetCode
* 博客:
**********************************/
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Solution {
public:
string convertToTitle(int n) {
if(n <= 0){
return "";
}//if
vector<int> vec;
--n;
// 除26取余倒排序
while(n >= 0){
vec.push_back(n % 26);
n /= 26;
--n;
}//
// 转换
string result;
int len = vec.size();
for(int i = 0;i < len;++i){
result.insert(result.begin(),vec[i]+'A');
}//for
return result;
}
};
int main(){
Solution solution;
for(int i = 500;i < 800;++i){
string result = solution.convertToTitle(i);
// 输出
cout<<result<<" ";
}
cout<<endl;
return 0;
}
【代码二】
class Solution {
public:
string convertToTitle(int n) {
if(n <= 0){
return "";
}//if
string result;
// 除26取余倒排序
while(n > 0){
n --;
result.insert(result.begin(),static_cast<char>(n % 26 + 'A'));
n /= 26;
}//
return result;
}
};