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 
本题主要是循环提取个位数的思想,用取余来实现,但是鉴于取余所得 余数周期是从0开始的,因此将n--提到前边,n--对后边的意义在于 去除个位数上有z时对十位以上数影响。

优化前的程序:

public class Solution {
    public String convertToTitle(int n) {
    if(n <= 0){
	        throw new IllegalArgumentException("Input is not valid!");
	    }
	 
	    StringBuilder sb = new StringBuilder();
	 
	    while(n > 0){
	    	char ch=',';
	    	if(n%26==0){
	    		ch=(char)(25+'A');
	    	}else {
				ch=(char)(n%26-1+'A');
			}
	        n--;
	        n /= 26;
	        sb.append(ch);
	    }
	 
	    sb.reverse();
	    return sb.toString();
    }
    
}

优化后的程序:

public class Solution {
    public String convertToTitle(int n) {

        char[] result = new char[20];
        int index = 20;
        n--;
        do {
            result[--index] = (char) ('A' + n % 26);
            n = n / 26 - 1;
        } while (n >= 0);
        return new String(result, index, 20 - index);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值