题目要求对excel中的列标题栏的字符串转为数字 或者 数字转为字符串,如下。
A -> 1
B -> 2
C -> 3
...
Z -> 26
AA -> 27
AB -> 28
思路:可以看出,这可以看做一道进制转换的题目。字符串第一位范围是1~26,第二位范围是26+1~26*(26+1)……因此可以将26作为一个进制来看。
public static String convertToTitle(int n) {
if(n<0) return null;
StringBuffer str = new StringBuffer();
char []Table = {'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','Z'};
while(n > 0){
n--;
str.append(Table[n%26]);
n = n/26;
}
return str.reverse().toString();
}
public static int titleToNumber(String s) {
int num = 0;
char temp;
for(int i = 0; i < s.length(); i++){
temp = s.charAt(i);
num = num*26 + (temp - 'A' + 1);
}
return num;
}