Excel Sheet Column Title
2015-07-05 22:55
323 查看
用了很长时间终于解决这道题了,记录下解决这道题的思路:
选择26进制来解决这个问题,26个字符{0,A,B,…,Y}分别代表阿拉伯数字{0,1,2,…,25}。
![](http://img.blog.csdn.net/20150705224459429)
如果按照我们这样的做法,26应该为A0,52应该为B0等等。
稍安勿躁,当我们得到这样的结果后开始进行转换,以A0为例:
A0 = 1 × 26^1 +0×26^0
= 0 × 26^1 +26×26^0
=Z;
同理对于B0:
B0 = 2 × 26^1 +0×26^0
= 1 × 26^1 +26×26^0
=AZ;
即高位的1代表了低位的26,将高位减1,低位加26,通过这种方式我们就实现了转换。
下面是代码:
选择26进制来解决这个问题,26个字符{0,A,B,…,Y}分别代表阿拉伯数字{0,1,2,…,25}。
如果按照我们这样的做法,26应该为A0,52应该为B0等等。
稍安勿躁,当我们得到这样的结果后开始进行转换,以A0为例:
A0 = 1 × 26^1 +0×26^0
= 0 × 26^1 +26×26^0
=Z;
同理对于B0:
B0 = 2 × 26^1 +0×26^0
= 1 × 26^1 +26×26^0
=AZ;
即高位的1代表了低位的26,将高位减1,低位加26,通过这种方式我们就实现了转换。
下面是代码:
[code]class Solution { public: string convertToTitle(int n) { string arr[26] = {"0","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y"}; string res; int quotient,remainder; quotient = n; for(; quotient != 0; ) { remainder = quotient % 26; quotient = quotient / 26; if(remainder == 0) { res = "Z" + res; quotient = quotient - 1; } else res = arr[remainder] + res; } return res; } };
相关文章推荐
- python print和strip
- MySQL 8小时问题
- [转]分布式计算框架综述
- Longest Substring Without Repeating Characters
- IOS菜鸟的所感所思(十六)—— 立体式的切换视图
- 通过代码自定义cell(cell的高度不一致)
- 黑马程序员——12_File_deleteOnExit()试验
- LeetCode 219: Contains Duplicate II
- 算法与数据结构八日谈之六——数据结构专题(uncompleted)
- 2015070507 - EffactiveJava笔记 - 第13条 使类和成员的可访问性最小(1)
- Red and Black(BFS or DFS)
- JAVA面向对象第三天
- 神经网络总结(初稿)
- PowerDesigner设计时表显示注释选项
- 采用EL在JSP采用<c:choose></c:choose>出现错误!
- 黑马程序员——10_IO_read方法笔记
- java基础学习笔记之IO流
- 编译原理第四章(2)
- 安卓EditText输入时自动填充
- 基于D3JS绘制中国地图