标签:
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进制数):
从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
标签:
原文地址:http://www.cnblogs.com/EdwardLiu/p/4179867.html