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():
- string str1("1234567890");
- string str2(str1.rbegin(), str1.rend());