LeetCode算法题-Excel Sheet Column Number(Java实现)
这是悦乐书的第182次更新,第184篇原创
01 看题和准备
今天介绍的是LeetCode算法题中Easy级别的第41题(顺位题号是171)。给定Excel工作表中显示的列标题,返回其对应的列号。例如:
A - > 1
B - > 2
C - > 3
Z - > 26
AA - > 27
AB - > 28
输入:“A”
输出:1
输入:“AB”
产量:28
输入:“ZY”
输出:701
本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。
02 第一种解法
这和前天的题目根据数字输出字符串列名类似,不过今天这道题是反过来的,根据列名字符串输出代表的数字。
既然是反过来,那么此处就应该是要用乘法了,并且我们也可以观察几组数据得到大致的算法。
"AA"表示数字28,可以看做26x1+1
"AAA"表示数字703,可以看做26x(26+1)+1
"AAAA"表示数字18279,可以看做 26x(26x(26+1)+1)+1
每次循环时,新的sum等于上一次循环的sum乘以26加上当前循环字符所表示的数字。
特殊情况:当字符串为空或者去掉空格后的长度等于0时,直接返回0。
public int titleToNumber(String s) {
int sum = 0;
if (s.isEmpty() || s.trim().length() == 0) {
return 0;
}
int len = s.length()-1;
for (int i=0; i<=len; i++) {
sum = (s.charAt(i)-'A' + 1) + sum*26;
}
return sum;
}
03 第二种解法
我们同样以上面的三个字符串举例。
"AA"表示数字28,可以看做1乘以26的一次方加上1乘以26的0次方。
"AAA"表示数字703,可以看做1乘以26的2次方加上1乘以26的1次方再加上1乘以26的0次方。
"AAAA"表示数字18279,可以看做1乘以26的3次方加上1乘以26的2次方再加上1乘以26的1次方再加上1乘以26的0次方。
这种就类似二进制数转十进制数一样,变成了26进制数转十进制数。
特殊情况:当字符串为空或者去掉空格后的长度等于0时,直接返回0。
public int titleToNumber2(String s) {
int res = 0;
if (s.isEmpty() || s.trim().length() == 0) {
return 0;
}
int col = s.length() - 1;
for (int i = 0; i < s.length(); i++) {
res += (s.charAt(i) - 64) * Math.pow(26, col--);
}
return res;
}
Math.pow(x,y)方法可返回 x 的 y 次幂的值。
04 小结
算法专题目前已连续日更超过一个月,算法题文章41+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。
以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!
LeetCode算法题-Excel Sheet Column Number(Java实现)的更多相关文章
- LeetCode算法题-Excel Sheet Column Title(Java实现)
这是悦乐书的第180次更新,第182篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第39题(顺位题号是168).给定正整数,返回Excel工作表中显示的相应列标题.例如: ...
- 【LeetCode】171. Excel Sheet Column Number
题目: Related to question Excel Sheet Column Title Given a column title as appear in an Excel sheet, r ...
- LeetCode OJ:Excel Sheet Column Number(表格列数)
Related to question Excel Sheet Column Title Given a column title as appear in an Excel sheet, retur ...
- 【LeetCode】171. Excel Sheet Column Number 解题报告(Java & Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目大意 解题方法 Java解法 Python解法 日期 [LeetCode] 题 ...
- 【一天一道LeetCode】#171. Excel Sheet Column Number
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...
- LeetCode之171. Excel Sheet Column Number
---------------------------------- 乘权相加即可. AC代码:(从右往左) public class Solution { public int titleToNum ...
- LeetCode 171. Excel表列序号(Excel Sheet Column Number) 22
171. Excel表列序号 171. Excel Sheet Column Number 题目描述 给定一个 Excel 表格中的列名称,返回其相应的列序号. 每日一算法2019/5/25Day 2 ...
- LeetCode Javascript实现 100. Same Tree 171. Excel Sheet Column Number
100. Same Tree /** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; ...
- 【leetcode】Excel Sheet Column Title & Excel Sheet Column Number
题目描述: Excel Sheet Column Title Given a positive integer, return its corresponding column title as ap ...
随机推荐
- IE console.log 调试状态
最近项目遇到问题,发现alert一个弹窗,在IE中,打开开发人员工具后,可以弹出,但是不打开无法弹出,最后发现是console.log的原因,注释掉console相关的代码,问题就解决了 有些版本的I ...
- Java学习笔记之——方法重载
方法重载: overload 1. 方法签名 组成:方法名(参数列表) 参数列表不同分为哪些情况? (1)有无参数 (2)参数的类型 (3)参数的个数 (4)参数的顺序(前提是类型不一样) 2.方法重 ...
- Redis学习一(基础入门).
一.前言 Redis是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.key-Value 的数据库.并提供多种语言的API. 通常,Redis 将数据存储于 ...
- webpack4 系列教程(十三):自动生成HTML文件
作者按:因为教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<webpack4 系列教程(十三):自动生成 HTML 文件>原文地址.更欢迎来我的小站看更多原创内容:go ...
- JDK和Tomcat安装
JDK安装: 1,选择安装位置,其余默认安装,安装两次,一个是JDK,一个是JRE,安装在两个文件夹中. 2,配置环境变量: 1,新建一个变量,变量名:JAVA_HOME,变量值:C:\Program ...
- 洛谷P5245 【模板】多项式快速幂(多项式ln 多项式exp)
题意 题目链接 Sol \(B(x) = \exp(K\ln(A(x)))\) 做完了... 复杂度\(O(n\log n)\) // luogu-judger-enable-o2 // luogu- ...
- 洛谷P4561 [JXOI2018]排序问题(二分 期望)
题意 题目链接 Sol 首先一种方案的期望等于它一次排好的概率的倒数. 一次排好的概率是个数数题,他等于一次排好的方案除以总方案,也就是\(\frac{\prod cnt_{a_i}!}{(n+m)! ...
- 详解Vue.js 技术
本文主要从8个章节详解vue技术揭秘,小编觉得挺有用的,分享给大家. 为了把 Vue.js 的源码讲明白,课程设计成由浅入深,分为核心.编译.扩展.生态四个方面去讲,并拆成了八个章节,如下: 准备工作 ...
- Android-垂直滑动的ViewPager
该ViewPager和正常的ViewPager的使用方式是一样的,只不过是垂直滑动的. 下面是这个ViewPager的代码 /** * 垂直滑动的ViewPager */ public class V ...
- 在 Centos 安装 MySQL
MySQL是开源的数据库管理系统,通常作为LEMP(Linux, Nginx, MySQL/MariaDB, PHP/Python/Perl)技术栈的一部分,而被安装.RedHat 会害怕 Oracl ...