持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情
一、题目与题目分析
题目
给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。
例如:
字母与数字对应关系
| 字母 | — | 数字 |
|---|---|---|
| A | -> | 1 |
| B | -> | 2 |
| C | -> | 3 |
| ... | ... | ... |
| Z | -> | 26 |
| AA | -> | 27 |
| AB | -> | 28 |
| ... | ... | ... |
(题目来源:力扣:168.Excel表列名称)
题目分析
Excel表中对应的列名称,主要了解清楚对应关系即可。(注意:这里的ZA是26*26+1,并不是27;27是对应的列名是AA)
二、整体逻辑与主要代码
题目分析已经比较清楚了,接下来我们进入代码设计。
整体逻辑
① 在对应关系中,已知小于1的都不符合;
② 再去遍历求余去转换对应的字母,同时添加到结果里;
③ 最后结果翻转得出最终答案。
主要代码
整体逻辑清晰了之后,同时也有较清楚的注释。直接来看代码吧! (如有不懂的或者更好的建议,欢迎评论区分享友友的看法哈~)
class Solution {
public static String convertToTitle(int columnNumber) {
StringBuilder sb = new StringBuilder();
if (columnNumber < 1) {
// 数字小于1,不符合,直接返回
return sb.toString();
}
while (columnNumber > 0) {
// 当前对应关系是 1 -> A; 2 -> B
columnNumber--; // 转换对应关系为 0 -> A;1 -> B ...(方便求余计算)
int addNum = columnNumber % 26; // 需要添加的ASCII码数值,匹配对应的字母
char ch = (char) ('A' + addNum); // 也可写成 (char) 65+addNum;A对应的ASCII码是65
sb.append(ch);
// 计算出一个字母,除26;就继续算下一个
columnNumber /= 26;
}
// 翻转
return sb.reverse().toString();
}
}
三、结果展示
四、人生总结
凡是慢慢来,迎刃而解!
题目数据库
Gitee:传送门
文章小尾巴
文章写作、模板、文章小尾巴可参考:《写作“小心思”》
感谢你看到最后,最后再说两点~
①如果你持有不同的看法,欢迎你在文章下方进行留言、评论。
②如果对你有帮助,或者你认可的话,欢迎给个小点赞,支持一下~
我是南方者,一个热爱计算机更热爱祖国的南方人。
(文章内容仅供学习参考,如有侵权,非常抱歉,请立即联系作者删除。)