Given a positive integer, return its corresponding column title as appear in an Excel sheet.For example:1 -> A2 -> B3 -> C...26 -> Z27 -> AA28 -> AB 

这道题是我微软onsite时遇到的一道题,没做过遇到这道题确实有点难一下子理得很清楚(我当时这道题应该做的不好,从most significant digit做,而且忘了n要-1)。这道题说白了其实就是十进制转换26进制,而且是从1开始的1十进制的转换

本质是进制转换,将n转化为26进制,转化过程如下(括号里的是26进制数):

1->(1)->A
2->(2)->B
...
26->(10)->Z
27->(11)->AA
28->(12)->AB
.....
52->(20)->AZ
53->(21)->BA

从least significant digit开始,不断地除以26取余数

这是我的方法:因为A是1,而不是0,相当于26进制的数都整体减1,才能对应上从0开始的十进制数。

 1 public class Solution {
 2     public String convertToTitle(int n) {
 3         if (n <= 0) return "";
 4         StringBuffer res = new StringBuffer();
 5         while (n > 0) {
 6             res.insert(0, (char)('A' + (n-1)%26));
 7             n = (n-1) / 26;
 8         }
 9         return res.toString();
10     }
11 }

这道题首先因为26个数字为一组,26次变一次,所以肯定是26进制,如果是1-26, 那么26号数字没法跟前面保持一致,比如都是一位25/26=0 而26/26=1. 所以应该回归0-based,1-26各数减一变成0-25,对应A到Z。但新的问题又出现了:AA本来是27,减了一之后是26, 26%26==0,最后一位是A没错,但是前一位26/26 == 1,又对应A,刚才0才对应A来着。所以,每一循环都要减一,以确保是0-based

另一种做法:

 1 public String convertToTitle(int n) {
 2     if(n <= 0){
 3         throw new IllegalArgumentException("Input is not valid!");
 4     }
 5
 6     StringBuilder sb = new StringBuilder();
 7
 8     while(n > 0){
 9         n--;
10         char ch = (char) (n % 26 + 'A');
11         n /= 26;
12         sb.append(ch);
13     }
14
15     sb.reverse();
16     return sb.toString();
17 }

转载于:https://www.cnblogs.com/EdwardLiu/p/4179867.html

Leetcode: Excel Sheet Column Title相关推荐

  1. LeetCode Excel Sheet Column Title(表格列数数字到英文转换)

    题意:将列数转换成 excel中的英文表示法 思路:如果能被26整除,说明尾部是Z,将当前数减去26,否则就是当前数对26取余对应的字母 代码如下: public class Solution {pu ...

  2. LeetCode 168. Excel Sheet Column Title

    LeetCode 168. Excel Sheet Column Title 分析 难度 易 来源 https://leetcode.com/problems/excel-sheet-column-t ...

  3. LeetCode - Easy - Excel Sheet Column Title

    2019独角兽企业重金招聘Python工程师标准>>> Given a positive integer, return its corresponding column title ...

  4. LeetCode 168 Excel Sheet Column Title

    168. Excel Sheet Column Title Given a positive integer, return its corresponding column title as app ...

  5. Leetcode Excel Sheet Column Number

    Related to question Excel Sheet Column Title Given a column title as appear in an Excel sheet, retur ...

  6. [LeetCode] Excel Sheet Column Number

    Related to question Excel Sheet Column Title Given a column title as appear in an Excel sheet, retur ...

  7. Leet Code OJ 168. Excel Sheet Column Title [Difficulty: Easy]

    题目: Given a positive integer, return its corresponding column title as appear in an Excel sheet. For ...

  8. Leetcode: Excel Sheet Column Number

    Related to question Excel Sheet Column TitleGiven a column title as appear in an Excel sheet, return ...

  9. leetcode python3 简单题168. Excel Sheet Column Title

    1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第一百六十八题 (1)题目 英文: Given a positive integer ...

最新文章

  1. 【企业管理】2019年12 月 每日花语
  2. 提升方法-Adaboost算法
  3. SSRS: How to Display Checkbox on Report
  4. [转】:Android调试工具及方法
  5. pixel 6 root
  6. ARTetris-AR版俄罗斯方块的源码解析
  7. 《为iPad而设计:打造畅销App》——了解客户
  8. 【分层图最短路】通信线路
  9. RoR vs. Java
  10. 员工管理能力怎么提高?不妨使用现代工时表软件
  11. Vue开发环境搭建,Vue.js安装,浏览器辅助工具Vue-devtools
  12. 抖音OAuth2.0快速登录源码
  13. linux权限管理的设计,Linux权限管理漫谈之用户切换
  14. python3 aes cbc模式解密_python3 AES 加解密
  15. 知道创宇赵伟乌镇演讲:以云护云、以云治云,构建云端安全治理体系
  16. 天池大数据比赛-天体分类总结
  17. 00005在java结果输出_浅谈Java反序列化漏洞原理(案例未完善后续补充)
  18. 性的短暂而致真情永失
  19. Flightgear通过属性树实时修改风向和风速
  20. L1-8 外星人的一天

热门文章

  1. concurrentbag 删除指定元素_Python 列表,for循环,元组的使用(修改、添加、删除、排序、切片)
  2. sqoop建表_Sqoop基础教程
  3. ionic4 QQ登陆集成
  4. SpringBoot配置文件加密
  5. android电池充电动画,Android 开机充电图标和充电动画效果
  6. cmd oracle sys登录_Oracle 数据库、表、方案的逻辑备份与恢复
  7. oracle拼接空格错误,oracle运维故事 一个空格引发的血案
  8. linux lsof 端口 字母,linux lsof/netstat查看进程和端口号相关命令:
  9. weixintong ent.php,多商户版微信商城对接微信公众号的方法及设置
  10. Android变量longpress,Android:在自定义WebView中从onLongPress打开ContextMenu