LeetCode

链接

171. Excel Sheet Column Number

题意

给出excel中的行号表示法,返回其数字表示法。

思路

其实可以理解为一种进制,变成进制间的转化问题。

代码

Java 1:

public class Solution {
    public int titleToNumber(String s) {
        char[] arr = s.toCharArray();
        int res = 0;
        for (int i = 0; i < arr.length; i++) {
            res += (arr[i] - 64) * Math.pow(26, arr.length - 1.0 - i);
        }
        return res;
    }
}

Java 2:

public class Solution {
    public int titleToNumber(String s) {
        int result = 0;
        for (int i = 0; i < s.length(); i++) {
            result = result * 26 + (s.charAt(i) - 'A' + 1);
        }
        return result;
    }
}

思考

  • 第二个解法更高效。26位进制数,因此每次累加前先左移一位,再加上新的数。
  • -64其实也就是 - 'A' + 1
原文地址:https://www.cnblogs.com/zyoung/p/6846236.html