码迷,mamicode.com
首页 > 其他好文 > 详细

Leetcode: Excel Sheet Column Title

时间:2014-12-23 13:47:09      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://www.cnblogs.com/EdwardLiu/p/4179867.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!