正整数到Excel编号之间的切换[100分]

题目描述

用过 excel 的都知道excel的列编号是这样的:

a b c … z aa ab ac … az ba bb bc … yz za zb zc … zz aaa aab aac …

分别代表以下编号:

1 2 3 … 26 27 28 29 … 52 53 54 55 … 676 677 678 679 … 702 703 704 705 … 请写个函数,完成从一个正整数到这种字符串之间的转换。

输入描述

一个正整数

输出描述

excel样式的字符串

用例1

输入

1

输出

a

用例2

输入

26

输出

z

用例3

输入

27

输出

aa

思路:

类似于十进制转成26进制, 注意这里正整数从1开始,而26进制的余数是0~25,对应a~z。因此计算的时候要先把被除数-1。

十进制转成其他进制-优快云博客

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();
        StringBuilder res = new StringBuilder();
        to26(num,res);
        System.out.println(res.reverse());
    }


    static int base=26;
    //余数从0~25 表示 a~z ,   题目给的正整数从1开始的,因此每次计算时要先-1
    // (27-1)/26 =1...0     (1-1)/26 = 0 ...0
    static void to26(int num,StringBuilder res){
        num-=1;
        int shang=num/base;
        int yushu=num%base;
        //a的ascii码为97
        res.append( (char)('a'+yushu));
        num=shang;
        while (num!=0){
            num-=1;
            shang=num/base;
            yushu=num%base;
            res.append( (char)('a'+yushu));
            num=shang;
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值