蓝桥杯-Excel地址[Java]

目录:

学习目标:

学习内容:

学习时间:

题目:

题目描述:

输入描述:

输出描述:

输入输出样例:

[示例 1:](#示例 1:)

运行限制:

题解:

思路:


学习目标:

  • 刷蓝桥杯题库日记

学习内容:

  • 编号96
  • 题目Excel地址
  • 难度困难

学习时间:

  • 2023/12/26 10:45

题目:

题目描述:

Excel 单元格的地址表示很有趣,它使用字母来表示列号。

比如,

A 表示第 1 列,

B 表示第 2 列,

Z 表示第 26 列,

AA 表示第 27 列,

AB 表示第 28 列,

BA 表示第 53 列,

......

当然 Excel 的最大列号是有限度的,所以转换起来不难。

如果我们想把这种表示法一般化,可以把很大的数字转换为很长的字母序列呢?

本题目即是要求对输入的数字, 输出其对应的 Excel 地址表示方式。

输入描述:

输入一个整数n,其范围 [1,2147483647]。

输出描述:

输出n对应的 Excel 地址表示方式。

输入输出样例:

示例 1:

输入:

复制代码
26

输出:

复制代码
Z

运行限制:

  • 最大运行时间:1s
  • 最大运行内存: 256M

题解:

java 复制代码
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = 0;
        n = scan.nextInt();
        scan.close();
        StringBuilder builder = new StringBuilder();
        while(n > 0) {
            builder.append((char)('A' + ((--n)%26)));
            n /= 26;
        }
        builder.reverse();
        System.out.println(builder);
    }
}

思路:

  • 用StingBuilder进行拼接,关于StringBuilder的使用可见http://t.csdnimg.cn/wCNry
  • 之前想的是('A' + ((n - 1) % 26)),后来发现脑子混了一下,到676的时候会出现错误。
  • 而用--n是让多出来的1减去(因为1对应的是A而不是0对应的A,而算法中是以'A'为起点加上取余值),这样才能对应的上。
相关推荐
Jinkxs几秒前
高级15-Java构建工具:Maven vs Gradle深度对比
java·开发语言·maven
有梦想的攻城狮1 分钟前
spring中的ApplicationRunner接口详解
java·后端·spring·runner·application
程序视点2 分钟前
设计模式之原型模式!附Java代码示例!
java·后端·设计模式
WeiJingYu.11 分钟前
机器学习——随机森林
算法·随机森林·机器学习
振鹏Dong1 小时前
微服务架构及常见微服务技术栈
java·后端
丶小鱼丶1 小时前
二叉树算法之【中序遍历】
java·算法
摇滚侠2 小时前
Oracle 关闭 impdp任务
java
快去睡觉~3 小时前
力扣238:除自身之外数组的乘积
数据结构·算法·leetcode
小马爱打代码3 小时前
算法 - 贪心算法
算法·贪心算法
编程爱好者熊浪3 小时前
RedisBloom使用
java