Related to question Excel Sheet Column Title Given a column title as appear in an Excel sheet, return its corresponding column number. For example: A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28
就是把26进制转换为10进制
1 public class Solution { 2 public int titleToNumber(String s) { 3 int res = 0; 4 for (int i=0; i<s.length(); i++) { 5 char c = s.charAt(i); 6 res += (int)(c - 'A' + 1) * Math.pow(26, s.length()-i-1); 7 } 8 return res; 9 } 10 }
从least significant bit开始
26进制
复杂度
时间 O(N) 空间 O(1)
思路
得到数字,其实就是把26进制的数转换为10进制的数。算法就是基本的进制转换方法,从后往前第n位的值乘上26^(n-1)
。这里26进制数是1开始的,即A是1。
1 public class Solution { 2 public int titleToNumber(String s) { 3 int res = 0; 4 int len = s.length(); 5 int k = 1; 6 for (int i=len-1; i>=0; i--) { 7 char c = s.charAt(i); 8 res += (int)(c-'A'+1)*k; 9 k *= 26; 10 } 11 return res; 12 } 13 }