给你一个整数 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
思路一:转换为字符串后翻转顺序
c语言解法
cpp
void reverse(char* str, int strSize) {
int left = 0, right = strSize - 1;
while (left < right) {
char tmp = str[left];
str[left] = str[right], str[right] = tmp;
left++;
right--;
}
}
char* convertToTitle(int columnNumber) {
char* ans = malloc(sizeof(char) * 8);
int ansSize = 0;
while (columnNumber > 0) {
int a0 = (columnNumber - 1) % 26 + 1;
ans[ansSize++] = a0 - 1 + 'A';
columnNumber = (columnNumber - a0) / 26;
}
ans[ansSize] = '\0';
reverse(ans, ansSize);
return ans;
}
分析:
本题给出一个整数返回excel表中相对应的名称,注意到整数每对26取模一次则返回名称长度加一,且此新字符和取模的数有关,将这些字符记录下来,编写一个翻转函数来改变顺序,最后返回处理好的字符串即可
总结:
本题考察对字符串的应用,利用取模运算转换字符后翻转输出即可解决,时间复杂度O(n),空间复杂度O(n)