天天看点

Leetcode--168.Excel表列名称

Leetcode--168.Excel表列名称

思路

虽然是简单题,但还是挖了坑。。其余的都很容易理解,需要注意的是类似

52

701

这种情况。

遇到这个题第一反应就是转化为

26进制

进行解题,但是在实际操作过程中发现,如果按照处理

2进制

的方法处理,遇到

52

701

时,对应的答案为

B @(2 0)

[email protected](1 0 25)

,与正确答案

AZ

ZY

根本对应不上。

造成这种问题的根本原因是对于26进制而言,每一位的表示范围是0-25,而A-Z对应的是1-26,所以需要将A-Z的映射关系进行改变,同时因为改变映射关系之后A-0,…Z-25,所以每一次的值也要减1。

代码

class Solution {
    public String convertToTitle(int columnNumber) {
        String ans = "";
        while(columnNumber!=0)
        {
            columnNumber--;
            int i=columnNumber%26;
            columnNumber/=26;
            char ch = (char)('A'+ i);

            ans = String.valueOf(ch) + ans;
        }
        return ans;
    }
}
           

继续阅读