首页 > 代码库 > 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