栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【LeetCode】Day3-Excel表列名称

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【LeetCode】Day3-Excel表列名称

题目

168. Excel表列名称【简单】

题解

刚开始以为是26进制数,后来发现也不太一样,26进制数是[0,25],而此处的规则是[1,26],所以AB不是 26 ∗ 0 + 1 ∗ 1 26*0+1*1 26∗0+1∗1,而是 26 ∗ 1 + 1 ∗ 1 26*1+1*1 26∗1+1∗1,因此想办法把这个规则转成26进制数,再解决
思路同十进制转二进制:先模再除倒输出

错误做法:

class Solution {
    public String convertToTitle(int columnNumber) {
        int n=columnNumber;
        StringBuffer a=new StringBuffer();//记录模26余数,转字母后倒输出即要求结果
        while(n>0){
            a.append((char)(n%26+64));
            n=n/26;
        }
        return a.reverse().toString();
    }
}

错误原因: 26 % 26 = 0 26%26=0 26%26=0,本来应该输出Z,结果输出@A

正解:- -n是题解的关键,其目的是将n从[1,26]转换到[0,25],使它真真正正成为26进制数

class Solution {
    public String convertToTitle(int columnNumber) {
        int n=columnNumber;
        StringBuffer a=new StringBuffer();//记录模26余数,转字母后倒输出即要求结果
        while(n>0){
            a.append((char)((--n)%26+'A'));//重点是模除之前n先减一
            n=n/26;
        }
        return a.reverse().toString();
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756118.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号