给你一个整数 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语言解法
- 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)