[Leetcode] Excel Sheet Column Title Number Conversion Excel列值转换

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();
    }
}
    原文作者:ethannnli
    原文地址: https://segmentfault.com/a/1190000003903482
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞