Excel Sheet Column Number
问题:
Given a column title as appear in an Excel sheet, return its corresponding column number.
思路:
进制转换方法
我的代码:
public class Solution { public int titleToNumber(String s) { if(s == null || s.length() == 0) return 0; int len = s.length(); int count = 0; int ret = 0; for(int i = len - 1; i >=0 ; i--,count++) { int num = s.charAt(i) - 'A' + 1; ret += num * (int)Math.pow(26,count); } return ret; } }
他人代码:
public class Solution { public int titleToNumber(String s) { int colNumber = 0; for (int i = 0; i < s.length(); i++) { colNumber = colNumber*26 + ((int)s.charAt(i)-64); } return colNumber; } }
学习之处:
我的想法是从后向前的做法,比较容易想的算法,但是每一次得进行进制的计算。
别人的想法是通过移位的方法,每一次移位的大小是26 这样便可以从前到后进行计算了,程序也变的简洁了许多。
if(null==s || s.trim().length()==0) return 0;
int number = 0;
for(char c : s.toLowerCase().toCharArray()){
number = number*24 + (c-'a') + 1;
}
return number;