本文主要是介绍leetcode做题笔记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
思路一:转换为字符串后翻转顺序
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)
这篇关于leetcode做题笔记168. Excel表列名称的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!