excel sheet column number java,LeetCode 算法题 - Excel Sheet Column Number(Java 实现)

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.publicinttitleToNumber(Strings){

intsum=0;

if(s.isEmpty()||s.trim().length()==0){

return0;

}

intlen=s.length()-1;

for(inti=0;i<=len;i++){

sum=(s.charAt(i)-'A'+1)+sum*26;

}

returnsum;

}

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.publicinttitleToNumber2(Strings){

intres=0;

if(s.isEmpty()||s.trim().length()==0){

return0;

}

intcol=s.length()-1;

for(inti=0;i

res+=(s.charAt(i)-64)*Math.pow(26,col--);

}

returnres;

}

Math.pow(x,y) 方法可返回 x 的 y 次幂的值.

04 小结

算法专题目前已连续日更超过一个月, 算法题文章 41 + 篇, 公众号对话框回复 [数据结构与算法] ,[算法] ,[数据结构] 中的任一关键词, 获取系列文章合集.

以上就是全部内容, 如果大家有什么好的解法思路, 建议或者其他问题, 可以下方留言交流, 点赞, 留言, 转发就是对我最大的回报和支持!

来源: http://www.bubuko.com/infodetail-2859938.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值