Excel sheet Column Title
2015-11-04 22:02
190 查看
package cn.edu.xidian.sselab;
/**
* title:Excel sheet Column Title
* content:
* 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
*/
public class ConvertToTitle {
//自己想的,这种方法虽然对,但是代码量比较多,看上去比较麻烦
//这里分两种情况来考虑的,(1)26的整数倍(2)不是26的倍数
//(1)当是26的整数倍的时候,还要考虑商是1的情况,不进位,商大于1时才进行进位操作
//(2)当不是26的整数倍的时候
public static String converToTitle(int n){
String title = "";
int remainder;
if(n % 26 == 0){
while(n % 26 == 0){
title = (char) 'Z' + title;
n = n / 26;
}
if(n > 1){
title = (char) (n - 2 + 'A') + title;
}
}else{
while(n > 26){
remainder = n % 26;
n = n / 26;
title = (char) (remainder - 1 + 'A') + title;
}
title = (char) (n - 1 + 'A') + title;
}
return title;
}
//参考的比较好的方法,唯一的问题是:满足26的倍数,发生进位操作,26的倍数个数就减一
public String convertToTitles(int n){
StringBuffer sb = new StringBuffer();
int remainder;
while(n > 0){
remainder = n % 26;
n = n / 26;
if(remainder != 0){
sb.append((char)(remainder - 1 + 'A'));
}else{
sb.append('Z');
n--;
}
}
return sb.reverse().toString();
}
}
/**
* title:Excel sheet Column Title
* content:
* 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
*/
public class ConvertToTitle {
//自己想的,这种方法虽然对,但是代码量比较多,看上去比较麻烦
//这里分两种情况来考虑的,(1)26的整数倍(2)不是26的倍数
//(1)当是26的整数倍的时候,还要考虑商是1的情况,不进位,商大于1时才进行进位操作
//(2)当不是26的整数倍的时候
public static String converToTitle(int n){
String title = "";
int remainder;
if(n % 26 == 0){
while(n % 26 == 0){
title = (char) 'Z' + title;
n = n / 26;
}
if(n > 1){
title = (char) (n - 2 + 'A') + title;
}
}else{
while(n > 26){
remainder = n % 26;
n = n / 26;
title = (char) (remainder - 1 + 'A') + title;
}
title = (char) (n - 1 + 'A') + title;
}
return title;
}
//参考的比较好的方法,唯一的问题是:满足26的倍数,发生进位操作,26的倍数个数就减一
public String convertToTitles(int n){
StringBuffer sb = new StringBuffer();
int remainder;
while(n > 0){
remainder = n % 26;
n = n / 26;
if(remainder != 0){
sb.append((char)(remainder - 1 + 'A'));
}else{
sb.append('Z');
n--;
}
}
return sb.reverse().toString();
}
}
相关文章推荐
- java基础之分解质因数练习
- 视频会议及流媒体十大开源项目
- iOS关于CGContextSetBlendMode: invalid context 0x0的错误
- Java8 Lambda表达式教程
- virtual关键字
- FOJ 1608 Huge Mission 线段树
- 基带信号、载波信号和宽带信号
- 五猴分桃问题详解
- OC基础知识 -- 类和对象
- 将jeecms中微信后台功能和前台认证以及接收消息的功能,修改为插件形式
- 动态规划求最长递增子序列(longest increasing subsequence)
- hdu2547 无剑无我
- hdoj3975Easy Fruit Ninja
- Tiny6410+K9GAG08U0E
- 修改MySQL默认数据库存放路径
- leetcode-Valid Anagram
- AngularJS API之equal比较对象
- Ubuntu 14.04数据库服务器--mysql的安装和配置
- 《编写有效用例》第二篇阅读体会
- 浅谈 Swift 2 中的 Objective-C 指针