您的位置:首页 > 其它

【leetcode】168. Excel Sheet Column Title

2016-07-12 21:16 363 查看
一、题目描述

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


题目解读:按照excel上面的title一样,输入一个数字输出对应的标题。

思路:一开始分情况讨论,思路非常混乱,因为除了AA....ZZ还有AAA,AAAA。分情况的话永远写不完啊。于是谷歌了一下,发现可以递归。每次算n的余数然后在结果字符串后面加上这个余数对应的字符即可,然后n=n/26。

c++代码(0ms,11.57%)

class Solution {
public:
string convertToTitle(int n) {
int p;
map<int, char> letter;
letter[0] = 'Z';
letter[1] = 'A';
for(int i=2; i<=26; i++){
letter[i] = letter[i-1]+1;
}//for
string s;
p = n%26;
string s0(&letter[p]);
if(p == 0)
n--;
n = n/26;
if(n)
return convertToTitle(n)+s0;
else
return s0;

}
};


总结:在写代码时,遇到char转string的问题。用如下代码

char ch;
string s(&ch);


别人的代码:

递归:

class Solution {
public:
string convertToTitle(int n)
{
return ((n-1)/26? convertToTitle((n-1)/26) : "") + string(1, 'A'+(n-1)%26);
}
};

迭代:

class Solution {
public:
string convertToTitle(int n) {
string s;
while(n)
{
s += 'A'+(n-1)%26;
n = (n-1)/26;
}
reverse(s.begin(), s.end());
return s;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: