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 -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 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 -> A2 -> B3 -> C...26 -> Z27 -> AA28 -> 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(); }}