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
思路:数学
因为是从 1 开始计算的,而不是从 0 开始,因此需要对 n 执行 -1 操作。
代码:(Java)
Java
public class ConverToTitle {
public static void main(String[] args) {
// TODO Auto-generated method stub
int columnNumber = 2147483647;
System.out.println(convertToTitle(columnNumber));
}
public static String convertToTitle(int columnNumber) {
StringBuilder str = new StringBuilder();
while(columnNumber > 0) {
columnNumber --;
str.append((char)(columnNumber % 26 + 'A'));
columnNumber /= 26;
}
return str.reverse().toString();
}
}
C++
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class ConvertToTitle {
public:
string convertToTitle(int columnNumber) {
string str;
while (columnNumber > 0)
{
columnNumber--;
str = (char)(columnNumber % 26 + 'A') + str;
columnNumber /= 26;
}
return str;
}
};
int main() {
ConvertToTitle c;
cout << c.convertToTitle(2147483647) << endl;
system("pause");
return 0;
}
运行结果:
复杂度分析:
- 时间复杂度: O ( log 26 c o l u m n N u m b e r ) O(\log_{26}{columnNumber}) O(log26columnNumber)
- 空间复杂度:不算构造答案所消耗的空间,复杂度为 O ( 1 ) O(1) O(1)
注:仅供学习参考, 如有不足,欢迎指正!
题目来源:力扣。