题目:在Excel中, 用A表示第1列, B表示第2列......, Z表示第26列,AA表示第27列,AB表示第28列..., 以此类推。请写出一个函数,输入用字母表示的列号编码,输出他是第几列。
把十进制数字用A-Z表示成二十六进制
package offer;
public class WordColumns {
public static void main(String[] args) {
System.out.println(wordColumns("AC"));
}
public static int wordColumns(String str){
if(str==null || str.length()==0) return 0;
int column = 0;
String tmp="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int length = str.length();
for(int i=0; i<str.length(); i++){
char ch = str.charAt(i);
int weight = weight(tmp,ch);
if(weight==0)return 0;
column += weight*(int)Math.pow(26,length-1-i);
}
return column;
}
private static int weight(String str,char ch){
int weight = 0;
for(int i=0; i<str.length(); i++){
if(ch==str.charAt(i)){
weight = i+1;
break;
}
}
return weight;
}
}