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);
}
}