44期问题及答案
Excel表列名称
题目描述:
给定一个正整数,返回它在 Excel 表中相对应的列名称。
例如:
1 -> "A"
2 -> "B"
3 -> "C"
...
26 -> "Z"
27 -> "AA"
28 -> "AB"
...
示例 1:
输入: 1
输出: "A"
示例 2:
输入: 28
输出: "AB"
示例 3:
输入: 701
输出: "ZY"
提示:
1 <= n <=
以下是使用 TypeScript 实现的解答:
function convertToTitle(n: number): string {
let result = '';
while (n > 0) {
n--; // 将 1-26 映射为 0-25
const char = String.fromCharCode((n % 26) + 65); // 余数对应 A-Z 的 ASCII 码值
result = char + result;
n = Math.floor(n / 26);
}
return result;
}
解题思路:
将给定的十进制数转换为 26 进制的形式,其中 A 表示 1,B 表示 2,以此类推。
从给定的数
n
开始,每次取余数和商,余数对应 A-Z 的 ASCII 码值。将每个余数对应的字符拼接到结果字符串的开头。
更新
n
的值为商,重复上述步骤,直到n
变为 0。最终得到的结果字符串即为 Excel 表中相对应的列名称。
时间复杂度分析:
n
的大小决定了循环的次数,时间复杂度与n
的位数相关,为 O(logN)。
空间复杂度分析:
使用了一个字符串来存储结果,空间复杂度为 O(logN)。
45期
实现 Trie (前缀树)
题目描述:
实现一个 Trie (前缀树),包含 insert
,search
和 startsWith
三个操作。
示例:
Trie trie = new Trie();
trie.insert("apple");
trie.search("apple"); // 返回 true
trie.search("app"); // 返回 false
trie.startsWith("app"); // 返回 true
trie.insert("app");
trie.search("app"); // 返回 true
说明:
你可以假设所有的输入都是由小写字母
a-z
构成的。保证所有输入均为非空字符串。
上面问题的答案会在第二天的公众号推文中公布,大家可以关注公众号:程序员每日三问,第一时间获得推送内容。
学习不打烊,充电加油只为遇到更好的自己,每天早上9点纯手工发布面试题(死磕自己,愉悦大家) 希望大家在这浮夸的程序员圈里保持冷静,每天坚持花20分钟来学习与思考,在千变万化,类库层出不穷的今天,不要等到找工作时才狂刷题,提倡每日学习。