【LeetCode】168. Excel表列名称

news/2025/3/26 13:27:07/

168. Excel表列名称(简单)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

思路

  • 显然,这是一道从 1 开始的的 26 进制转换题。

  • 对于一般性的进制转换题目,只需要不断地对 columnNumber 进行 % 运算取得最后一位,然后对 columnNumber 进行 / 算,将已经取得的位数去掉,直到columnNumber 为 0 即可。

  • 一般性的进制转换题目无须进行额外操作,是因为我们是在「每一位数值范围在 [0,)的前提下进行 逢 a 进一」,比如二进制每一位数值范围为[0, 2)

  • 但本题从1 开始,因此在执行「进制转换」操作前,我们需要先对columnNumber 执行减一操作,从而实现整体偏移,使得数值范围回到 [0, 26) ,这样才和一般的进制转换题目相同。

代码

class Solution {
public:string convertToTitle(int columnNumber) {string ans;char per;int a, b;while(columnNumber){columnNumber --;a = columnNumber / 26 ,b = columnNumber % 26;ans.push_back('A' + b);columnNumber = a;}reverse(ans.begin(), ans.end());return ans;}
};

收获

  • 做这道题的时候,一下子就反应过来,是 26 进制的题目,但是没有思考到每一位的数字范围应该在 [0, 26) ,导致计算一直出错;
  • 此外,进制转换类型的题目模板不够熟悉,想了很久;
  • 学习到一个新函数 reverse(ans.begin(), ans.end()); ,可以将答案字符串反转,这个写法比较高级。

http://www.ppmy.cn/news/86475.html

相关文章

Qt经典面试题:Qt开启线程的几种方式

方法一:从QThread类派生 ①创建一个类从QThread类派生 ②在子线程类中重写 run 函数, 将处理操作写入该函数中 ③在主线程中创建子线程对象, 启动子线程,调用start()函数 这种方法涉及到创建一个从QThread类派生的子类,并在该子类中重写run()函数。处理操…

如何在Linux中更改SSH端口?

SSH(Secure Shell)是一种安全的远程登录协议,它允许您通过网络远程连接到Linux系统并进行管理操作。默认情况下,SSH使用22端口进行通信。然而,为了增强系统的安全性,有时候我们需要更改SSH端口,…

高并发线程内存事件处理器 disruptor 三 高性能原理

一 disruptor为什么快的核心原理 属性填充:通过添加额外的无用信息,避免伪共享问题 什么是共享内存 在系统内存中,我们的数据存在于cpu缓存中,cpu缓存的基础缓存单位为 cache line,通常cache line的大小为64字节&…

如何在CSDN获取更多的铁粉?

一、铁粉的定义 要想获取铁粉,首先我们得知道什么是铁粉,根据官方给出定义是下面这样的: 【铁粉】具体规则如下: 铁粉 90 天内有阅读,购买专栏或其他互动,并且原力等级 > 0 的粉丝。 也就是说你的原力…

Cisco® Catalyst® 8000V 边缘软件 (Catalyst 8000V) 17.11.1a 发布 - 虚拟路由器

Cisco Catalyst 8000v Edge Software, IOS XE Release Dublin-17.11.1a ED 请访问原文链接:https://sysin.org/blog/cisco-catalyst-8000v/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Cisco Catalyst 8000V 边…

【Devops运维】Docker搭建jenkins自动化编译hadoop/spark/flink/hive/kyuubi/trino大数据组件

Docker搭建jenkins DevOps概念Docker部署Jenkins制作Jenkins镜像Dockerfile及所依赖的脚本build镜像 利用docker-compose部署jenkins 配置Jenkins管理员密码插件安装系统配置全局工具配置MAVEN 配置JDK 配置GIT 配置MAVEN 配置 Jenkins Maven Git 自动化编译找到token生成界面…

揭秘神秘的JS混淆加密技术

在编程的世界里,沉香舞动着一种强大的力量,就像母亲为了救子不惜一切的决心。而在JavaScript的领域中,我们也有一种神秘的技术,它能够将代码变得晦涩难懂,宛如沉香救母一般,守护着程序的安全。今天&#xf…

spark应用程序的执行

1 SparkContext -》{ sparkconf --配置对象,基础配置 sparkEnv --环境对象,通讯环境 SchedulerBackend --通讯后台 住哟啊用于和Executor之间进行通讯 TaskScheduler – 任务调度器 任务调度 DAGScheduler – 阶段调度器 阶段划分 } spark.sparkContext…