您的位置:首页 > 其它

168. Excel Sheet Column Title

2016-05-15 19:02 393 查看

168. Excel Sheet Column Title

Description:

Given a positive integer, return its corresponding column title as appear in an Excel sheet.

Example:

1 -> A
2 -> B
3 -> C
...
26 -> Z
27 -> AA
28 -> AB


Analysis:

这个问题跟十进制转换为26进制数是比较类似的,但是有点细微差别(你会发现 A、B…、AA、AB这些数里没有“0”,Z而非A0表示26)。

1. 首先注意,我们使用(num-1)%26+1来取得低位数,而非直接使用num%26,因为后者会把‘26’变为‘0’

2. 在取高位的时候,我们使用(num-1)/26,这样可以防止’26’的整数倍进位。

note: 由于个人使用的C++编译器版本较低,以下代码中string::insert函数使用的比较费劲,C++11版本好像可以直接在其函数中使用char类型参数了(详见:http://en.cppreference.com/w/cpp/string/basic_string/insert)。

Source Code(C++):

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

class Solution {
public:
string convertToTitle(int n) {
string s;
s = (char)((n-1)%26+65);
while (n>26) {
n =(n-1)/26;
char c = (char)((n-1)%26+65);
s.insert(0, &c, 0, 1);
}
return s;
}
};

int main() {
Solution sol;
cout << sol.convertToTitle(27);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: