首页 > 代码库 > Leetcode: Excel Sheet Column Title
Leetcode: Excel Sheet Column Title
Given a positive integer, return its corresponding column title as appear in an Excel sheet.For example: 1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> 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取余数
这是我的方法:
1 public class Solution { 2 public String convertToTitle(int n) { 3 if (n <= 0) return ""; 4 StringBuffer res = new StringBuffer(); 5 while ((n-1)/26 > 0) { 6 res.insert(0, (char)(‘A‘ + (n-1)%26)); 7 n = (n-1) / 26; 8 } 9 res.insert(0, (char)(‘A‘ + (n-1)%26));10 return res.toString();11 }12 }
网上受别人启发得出的方法:
1 public class Solution { 2 String convertToTitle(int n) { 3 StringBuffer str = new StringBuffer(); 4 while(n != 0){ 5 int r = n % 26; 6 n= n / 26; 7 if(r == 0){ //为26的整数倍,该位设置为Z,n减掉1 8 str.insert(0, ‘Z‘); 9 n--;10 }11 else{12 str.insert(0, (char)(‘A‘+r-1));13 }14 }15 return str.toString();16 }17 }
Leetcode: Excel Sheet Column Title
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。