Given a positive integer, return its corresponding column title as appear in an Excel sheet.
For example:
1 -> A
2 -> B
……
26 -> Z
27 -> AA
28 -> AB
Example1:
input: 1
output: “A”
Example2:
input : 34
output: “AH”
乍看有点简单,其实不然需要考虑高低位!
就是一位一位的求,此题从低位往高位求,最后用reverse函数把string的begin和end调转就可!
首先看简单的,对于小于26的数字,直接把它们对26取余,然后再减去1加上‘A’即可,但是对26来说,取余是0,所以要分开处理!
可以取余为0的,就是在res上直接加上‘Z’不用再减去1,之后再把n减去26,依次反复!
不能得话,一般化处理,先减去这个余数,再自减26!
class Solution {
public:
/**
* @param n: a integer
* @return: return a string
*/
string convertToTitle(int n)
{
// write your code here
string res = "";
while(n)
{
if(n%26 == 0)
{
res += 'Z';
n -= 26;
}
else
{
res += n%26 - 1 + 'A';
n = n - n%26;
}
n /= 26;
}
reverse(res.begin(),res.end());
return res;
}
};
借鉴了大佬得做法!省略了if-else 直接让 n自减1 比如26,减去1还剩下25,那么’A’ + 25就是Z了!
class Solution {
public:
/**
* @param n: a integer
* @return: return a string
*/
string convertToTitle(int n)
{
// write your code here
string res = "";
while(n)
{
res += (--n)%26 + 'A';
n /= 26;
}
reverse(res.begin(),res.end());
return res;
}
};