0
点赞
收藏
分享

微信扫一扫

Excel表列序号

南柯Taylor 2021-09-21 阅读 130
今日算法
题目描述:
示例 1:
示例 2:

输入: "AB"
输出: 28

示例 3:

输入: "ZY"
输出: 701

思路:
  • 将16进制数abc,转成10进制,我们是怎么做的呢,

c * 16^0 + b * 16 ^ 1 + c * 16^2

String columnTitle = "abc";
 int index = 0;
        for (int i = 0; i < columnTitle.length(); i++) {
            index = index * 16 + Integer.valueof(columnTitle.charAt(i) + "");
        }
 return index;

本题本质上也是一个进制转换题,只不过不是16进制转10进制,而是26进制转10进制,需要注意的一点就是,'A'上从1开始的,因此常数项需要加上1.

代码实现:
class Solution {
    public int titleToNumber(String columnTitle) {
        int index = 0;
        for (int i = 0; i < columnTitle.length(); i++) {
            index = index * 26 + (columnTitle.charAt(i) - 'A' + 1);
        }
        return index;
    }
}
举报

相关推荐

0 条评论