Excel Sheet Column Number
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进制
复杂度
时间 O(N) 空间 O(1)
思路
得到数字,其实就是把26进制的数转换为10进制的数。算法就是基本的进制转换方法,从后往前第n位的值乘上26^(n-1)
。这里26进制数是1开始的,即A是1。
代码
public class Solution {
public int titleToNumber(String s) {
int num = 0, pow = 1;
for(int i = s.length() - 1; i >= 0 ; i--){
num += (s.charAt(i) - 'A' + 1)*pow;
pow *= 26;
}
return num;
}
}
Excel Sheet Column Title
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
26进制
复杂度
时间 O(N) 空间 O(1)
思路
把10进制的转换成26进制,做法是除26取余,一直除到0,最后把余数逆序一下就行了。不过因为A是1,而不是0,相当于26进制的数都整体减1,才能对应上从0开始的十进制数。
代码
public class Solution {
public String convertToTitle(int n) {
StringBuilder sb = new StringBuilder();
while(n != 0){
sb.append((char)('A' + (n - 1) % 26));
n = (n - 1) / 26;
}
return sb.reverse().toString();
}
}