题目描述
给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
示例 1:
输入:columnNumber = 1
输出:“A”
示例 2:
输入:columnNumber = 28
输出:“AB”
示例 3:
输入:columnNumber = 2147483647
输出:“FXSHRXW”
解题思路
通过分析可知,Excel中的列名称,是符合26进制的,举例,28转成26进制为:12。
因为 1乘26的1次方+2乘26的0次方=28
所以接下来思路就简单了,先把对应的数字转成26进制,然后匹配对应的字母即可。1:A,2:B …26:Z
tips:在ASCII码中,大写字母A-Z对应的十进制数为65-90.
完整代码
static void Main(string[] args)
{
var result = ConvertToTitle(28);
Console.WriteLine(result);
Console.ReadKey();
}
public static string ConvertToTitle(int columnNumber)
{
//把数字转换成26进制,然后匹配对应的字母即可。
//65-90--->A-Z
string s = string.Empty;
while (columnNumber > 0)
{
int m = columnNumber % 26;
if (m == 0)
{
m = 26;
}
s = (char)(m + 64) + s;
columnNumber = (columnNumber - m) / 26;
}
return s;
}
Study hard and make progress every day.