168. Excel表列名称 题解
给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
例如:
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
...
示例 1:
输入:columnNumber = 1
输出:"A"
示例 2:
输入:columnNumber = 28
输出:"AB"
示例 3:
输入:columnNumber = 701
输出:"ZY"
示例 4:
输入:columnNumber = 2147483647
输出:"FXSHRXW"
提示:
1 <= columnNumber <= 231 - 1
题解
我们 对 26取模的 范围是 0 - 25 , 但我们希望映射成 1 - 26 , 就是 A - Z 这个范围内 , 直接取模 26%26=0 不在我们范围内 , 所以我们采用-1 [0-25]对应[A-Z] (26-1)%26 =25 25+‘A’=‘Z’
官方题解 感觉官方推出来是 靠数学 ,也可以看看
class Solution {
public:
string convertToTitle(int columnNumber) {
string s;
stack<char> st;
while(columnNumber)
{
columnNumber --;
int c=columnNumber %26 ;
// cout<<c<<endl;
char cs = c + 'A' ;
st.push(cs);
columnNumber /= 26;
}
while(!st.empty())
{
char a = st.top();
st.pop();
s += a;
}
return s;
}
};