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

【leetcode 进制转换】Excel Sheet Column Title

时间:2014-12-21 19:18:21      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

1、题目

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 

2、分析

excel中的序是这样排的:A~Z,AA~ZZ,AAA~ZZZ.......
本质是进制转换,将n转化为26进制,转化过程如下(括号里的是26进制数):
1->(1)->A
2->(2)->B
...
26->(10)->Z
27->(11)->AA
28->(12)->AB
.....
52->(20)->AZ
53->(21)->BA

因此可以将n转化为26进制表示的数,然后对每一位的数,根据『1->A,2->B,3->C....25->Y,26->Z』来转化。
当然,按照进制转换的方法(不断地除26取余数),不可能有26的余数,比如:52->(20)->AZ,此时余数是0,这种情况要特殊处理,很简单,如下面的代码所示:

3、代码

  1. string convertToTitle(int n) {  
  2.         string str;  
  3.         while(n){  
  4.             int r=n%26;  
  5.             n=n/26;  
  6.             if(r==0){   //为26的整数倍,该位设置为Z,n减掉1  
  7.                 str+=‘Z‘;  
  8.                 n--;  
  9.             }else{  
  10.                 str+=(‘A‘+r-1);  
  11.             }  
  12.         }  
  13.         //反转  
  14.         string result;  
  15.         for(int i=str.size()-1;i>=0;i--){  
  16.             result+=str[i];  
  17.         }  
  18.         return result;  
  19.     } 

【leetcode 进制转换】Excel Sheet Column Title

标签:

原文地址:http://www.cnblogs.com/yuyanbian/p/4176868.html

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