LeetCode-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 
这种题跟整型转化为一个字符串,整型转化为一个二进制都是一个道理,使用递归比较适合本题,但是还是稍微有区别的,先来上代码

StringBuilder sb = new StringBuilder("");
	public String convertToTitle(int n) {
		n--;
		if (n < 26) {
			sb.append(intToChar(n));
			return sb.toString();
		}
		convertToTitle(n/26);
		sb.append(intToChar(n%26));
		return sb.toString();
	}
	
	public char intToChar(int n) {
		return (char)(n+'A');
	}
看到什么区别了么?在这个函数的第一行有一个n--,因为这个看似是一个26进制问题,但是问题就来了,他的初始数字不是0是1,在你在使用除法和取余等操作的时候,自然用到了自然数的0这个特性,好像是这样吧。。。。所以把n减一,最后才是真正的26进制问题,是0~25的26进制(跟0~9的十进制,0~1的二进制等相同),而不是1~26的26进制。。。好像是这个道理吧。。。
追求代码的简洁性,更简练的代码

public String convertToTitle(int n) {
		n--;
		if (n < 26) {
			return String.valueOf(intToChar(n));
		}
		return convertToTitle(n/26) + intToChar(n%26); 
	}
	
	public char intToChar(int n) {
		return (char)(n+'A');
	}




你可能感兴趣的:(LeetCode-Excel Sheet Column Title)