LeetCode刷题记录(十六):无重复字符的最长子串

本文介绍了如何解决LeetCode中的整数反转问题,通过解析题目并提供解题思路,展示了如何反转一个整数并处理可能超出整数范围的情况。在Java代码实现中,重点在于判断反转结果是否超出整数范围,并在反转过程中避免整数错位。
摘要由CSDN通过智能技术生成

theme: smartblue

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第16天,点击查看活动详情

整数反转

题目如下图所示,也可以在LeetCode题目中找到此题。

image.png

题目解析

题目提供素材

题目中提供的素材十分有限。

  1. 只有一个整型数字X。

注意:这里的整型数字的取值范围是当前整型结构的最大区间。

image.png

我的解读

从题目描述中,已经给出了几个示例,比如123最后的预期结果是321,-123最后的预期结果是-321。

我们想要得到预期的结果还是比较容易的。

有点费劲的地方是如何处理反转后超出整数取值范围的情况,当然了返回0是必然的。

如何获取是一个关键,这道题要是没有这个点,也就是个简单系数。

解题思路

将暴力美学坚持到底!

让我们一步一步的实现一下吧。

只需要搞清下面几点信息就能实现出来。

如何取数字的最后一位数值

这里通过取余的方式去获取,每次除10,余下的数字就是尾部数字了。

如何判断数字是否超出了整数的取值范围

有一个前提是,传入的参数不会是超出这个范围的,但反转后可能会是。

但是一味的加上后,可能会造成整数错位的情况。

所以不能在每次拼接后进行比对,而是要在拼接前进行对比。

这里要巩固两个常量值。

Integer.MIN_VALUE

Integer.MAX_VALUE

java if (result < Integer.MIN_VALUE / 10 || result > Integer.MAX_VALUE / 10) { return 0; }

使用上述方法进行比对即可完成这项工作了。

代码

具体的代码如下,今天巩固了一个知识点,就是Integer中最大整型数字和最小整型数字的常量。

java class Solution { public int reverse(int x) { int result = 0; int i = 0; while(x != 0){ if (result < Integer.MIN_VALUE / 10 || result > Integer.MAX_VALUE / 10) { return 0; } int n = x % 10; if(i != 0 || n != 0){ result = result * 10 + n; x = x / 10; } i++; } return result; } }

执行结果

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ijiran

一杯咖啡太贵,一块糖就可以

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值