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 
52 -> AZ

网友说:

Excel序是这样的:A~Z, AA~ZZ, AAA~ZZZ, ……

本质上就是将一个10进制数转换为一个26进制的数

注意:由于下标从1开始而不是从0开始,因此要减一操作。

注意是转换是从1开始计数的,不是从0开始的,所以不是直接地做26进制转换那么简单,需要中间做一些变换。试了几次, 比如 26 - Z, 52->AZ,试出了正确的代码。

 1 class Solution {
 2 public:
 3     string convertToTitle(int n)
 4     {
 5         int val=n;
 6         string res;
 7         char begin='A';
 8         for(;val!=0;)
 9         {
10             char ch;
11             int temp=(val-1)%26;
12             ch=begin+temp;    //这个地方告诉自己字符运转
13             res=ch+res;          //这儿看仔细字符和string的顺序,可如此
14             val =(val-1)/26;     //这儿val减1之后再去除,自己就是输入26之后错误,通过测试用例才发现的!!
15         }
16         return res;
17     }
18 };    

论坛里见到这个问题:如何把string的元素逆序?

我直接想到的是利用反向迭代器reverse_iterator:rbegin()和rend():

  1. string str1("1234567890");  
  2. string str2(str1.rbegin(), str1.rend());  
手里拿着一把锤子,看什么都像钉子,编程界的锤子应该就是算法了吧!
原文地址:https://www.cnblogs.com/chess/p/5076758.html