专栏:50多种数据结构彻底征服
专栏:50多种经典图论算法全部掌握
原来HR招人面试真的是有kpi考核的,真的搞不懂这些脑残公司怎么想的,既然不想招人,为什么还要让别人白跑一趟,到底图的是啥?所以经常有人说面试聊的挺好的,问的也都回答出来了,但就是不发offer,一度怀疑自己的能力,给求职者一次次的打击,稍微有点信心不足的可能就懈怠了。
网友评论:
--------------下面是今天的算法题--------------
来看下今天的算法题,这题是LeetCode的第168题:Excel表列名称。
问题描述
来源:LeetCode第168题
难度:简单
给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
例如:
A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...
示例1:
输入:columnNumber = 28 输出:"AB"
示例2:
输入:columnNumber = 701 输出:"ZY"
1 <= columnNumber <= 2^31 - 1
问题分析
这题是让把数字转化为一个由大写字母表示的字符串,大写字母总共有 26 个,实际上这题是让 把 10 进制转化为 26 进制 。因为数字是 10 进制的,如果还转化为 10 进制,我们只需要对 10 求余,每次取数字的个位数即可。
比如数字 326 ,先取 326 的个位数字 6 。
326 % 10 = 6 取个位数字
326 / 10 = 32 除以 10 。在取 32 的个 位数字 2 。
32 % 10 = 2 取个位数字
32 / 10 = 3 除以 10 。最后在取 3 的个 位数字 3 。
3 % 10 = 3 取个位数字
3 / 10 = 0 除以 10 。但这题转化的是 26 进制,我们只需要把 10 换成 26 即可,每次需要不断的对 26 求余,然后在除以 26 。因为大写字母 'A' 对应的是数字 1 ,所以下面代码中每次对 26 求余之前需要减 1 。
JAVA:
public String convertToTitle(int columnNumber) {
StringBuilder stringBuilder = new StringBuilder();
while (columnNumber != 0) {
// 每次对26求余然后转化为大写字母。
stringBuilder.append((char) ('A' + (--columnNumber % 26)));
columnNumber /= 26;
}
// 上面是从低位开始计算,所以最后还需要反转。
return stringBuilder.reverse().toString();
}
C++
public:
string convertToTitle(int columnNumber) {
string s;
while (columnNumber != 0) {
// 每次对26求余然后转化为大写字母。
s += 'A' + (--columnNumber % 26);
columnNumber /= 26;
}
// 上面是从低位开始计算,所以最后还需要反转。
reverse(s.begin(),s.end());
return s;
}
笔者简介
博哥,真名:王一博,毕业十多年, 作者,专注于 数据结构和算法 的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解800多题,对算法题有自己独特的解题思路和解题技巧,喜欢的可以给个关注,也可以 下载我整理的1000多页的PDF算法文档 。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.