LeetCode算法题-Excel Sheet Column Title(Java实现)
这是悦乐书的第180次更新,第182篇原创
01 看题和准备
今天介绍的是LeetCode算法题中Easy级别的第39题(顺位题号是168)。给定正整数,返回Excel工作表中显示的相应列标题。例如:
1 - > A.
2 - > B.
3 - > C.
26 - > Z.
27 - > AA
28 - > AB
输入:1
输出:“A”
输入:28
输出:“AB”
输入:701
输出:“ZY”
本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。
02 第一种解法
通过题目的几个小例子,最后得到的字符串结果,可以将其拆分两部分,一部分是除以26的商,一个是除以26的余数,余数肯定是会小于26的,但是商却是有可能大于26的,这时就需要利用循环或者递归来处理。
当n小于等于0的时候,直接返回空串。
当n小于27的时候,是可以直接在A-Z里面取到值的,因为A本身代表1,所以要减去1。
当n大于27的时候,这时需要判断能否被26整除,也就是对26进行取余是否等于0,如果是26的整数倍,最后一位肯定代表的是Z,而前面的数就需要除以26再减1,减1是相当于n除以26的商向前移动一位,直到处理完所有数据,此步骤是递归操作的,因为这部分的数也是符合这三步判断的。如果不能被整除,那么最后一位所代表的就是n对26取余的余数所表示的字母,即余数和字符A的和再减1,因为A本身代表的就是1,而前面部分需要处理的就是n除以26的商再进行递归处理。
public String convertToTitle(int n) {
if (n <= 0) {
return "";
}
if (n < 27) {
return "" + (char) ('A' + n - 1);
} else {
if (n % 26 == 0) {
return convertToTitle(n / 26 - 1) + "Z";
} else {
return convertToTitle(n / 26) + (char) ('A' + n % 26 - 1);
}
}
}
03 第二种解法
此解法我们使用循环来处理数据,如果不使用第一种解法的判断,遇上26或者它的倍数的时候,拿到Z?如果直接用n对26取余,再和字符A相加,是得不到Z的,用n除以26的商更加得不到,这时我们可以想个折中的办法,先把n减1,再去对26取余,然后和字符A相加,因为A本身代表1,就相当于减去的1又补回来了。得到字符串后,此时的n等于n减去1再除以26的商。
public String convertToTitle2(int n) {
String str = "";
while (n != 0) {
int rem = (n - 1) % 26;
str = (char) (rem + 'A') + str;
n = (n - 1) / 26;
}
return str;
}
04 第三种解法
此解法更加丧心病狂,居然只有一行,是讨论区某位大神的杰作,真是佩服,为了可读性,将其改动了下。
public String convertToTitle3(int n) {
if (n == 0) {
return "";
} else {
return convertToTitle3(--n/26) + (char) ('A' + (n % 26));
}
}
05 小结
算法专题目前已连续日更超过一个月,算法题文章39+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。
以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!
LeetCode算法题-Excel Sheet Column Title(Java实现)的更多相关文章
- LeetCode算法题-Excel Sheet Column Number(Java实现)
这是悦乐书的第182次更新,第184篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第41题(顺位题号是171).给定Excel工作表中显示的列标题,返回其对应的列号.例如 ...
- 【LeetCode】168. Excel Sheet Column Title 解题报告(Java & Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 迭代 递归 日期 [LeetCode] 题目地址:https: ...
- 【LeetCode】168. Excel Sheet Column Title
题目: Given a positive integer, return its corresponding column title as appear in an Excel sheet. For ...
- [算法练习]Excel Sheet Column Title
题目: Given a positive integer, return its corresponding column title as appear in an Excel sheet. For ...
- LeetCode 168. Excel表列名称(Excel Sheet Column Title)
168. Excel表列名称 168. Excel Sheet Column Title 题目描述 给定一个正整数,返回它在 Excel 表中相对应的列名称. LeetCode168. Excel S ...
- 【leetcode】Excel Sheet Column Title & Excel Sheet Column Number
题目描述: Excel Sheet Column Title Given a positive integer, return its corresponding column title as ap ...
- 【leetcode】Excel Sheet Column Title
Excel Sheet Column Title Given a non-zero positive integer, return its corresponding column title as ...
- 【LeetCode】168 & 171- Excel Sheet Column Title & Excel Sheet Column Number
168 - Excel Sheet Column Title Given a positive integer, return its corresponding column title as ap ...
- Leetcode Excel Sheet Column Number (C++) && Excel Sheet Column Title ( Python)
Given a column title as appear in an Excel sheet, return its corresponding column number. For exampl ...
随机推荐
- SpringBoot学习(四)-->SpringBoot快速入门,开山篇
Spring Boot简介 Spring Boot的目的在于创建和启动新的基于Spring框架的项目.Spring Boot会选择最适合的Spring子项目和第三方开源库进行整合.大部分Spring ...
- Zookeeper(一) —— 环境搭建
一.概述 集中式 向 分布式演变,高并发.海量存储 应用场景: * 数据发布.订阅的两种方式:推模式.拉模式 * 命名服务 * 分布式协调/通知(心跳检测) * 负载均衡 自增长id和uuid的缺点, ...
- swoole扩展实现真正的数据库连接池
php的数据库连接池一直以来都是一个难题,很多从php语言转向java的项目,大多数原因可能都是因为java有更好的连接池实现.php的mysql扩展提供了长连接的API,但在php机器数量较多,规模 ...
- (5)Microsoft office Word 2013版本操作入门_标尺
1.标尺 :左缩进,右缩进,悬挂缩进,首行缩进,阴影部分 可以左右拖拽调整边缘. 1.1 左缩进:默认缩进所在的段落,要缩进多段则需要多段落选中, 后拖动左缩进. 1.2 首行缩进缩进或者突出所选的 ...
- nginx 日子配置
nginx access_log nginx 日志说明 不同用户防卫Nginx会把每个用户访问往咱的日志信息记录到指定的日志文件里,供网站管理员分析用户浏览行为等,此功能又ngx_http_log_m ...
- Netty实战十三之使用UDP广播事件
1.UDP的基础知识 我们将会把重点放在一个无连接协议即用户数据报协议(UDP)上,它通常用在性能至关重要并且能够容忍一定的数据报丢失的情况下. 面向连接的传输(如TCP)管理了两个网络端点之间的连接 ...
- Android Studio 学习(一)
XML给元素定义ID 定义id android:id="@+id/button_1" 引用id id/id_name 解决Failed to load Appcompat Acti ...
- EF中更新操作 ID自增但不是主键 ;根据ViewModel更新实体的部分属性
//ID自增但不是主键的情况 public int Update_join<TEntity>(TEntity entity) where TEntity : class { dbconte ...
- 2; HTML 基本结构
1. HTML 的基本结构 2. HTML 控制标记的格式 3. 最常用的控制标记 本章讲解最基本的 HTML 元素,也就是创建文档结构所需的元素.例如:标题.段落. 页面分隔.注释等等. 2.1 H ...
- RabbitMQ 在 web 页面 创建 exchange, queue, routing key
这里只是为了展示, 在实际开发中一般在消费端通过 注解来自动创建 消费端: https://www.cnblogs.com/huanggy/p/9695934.html 1, 创建 Exchange ...