theme: smartblue
一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第16天,点击查看活动详情。
整数反转
题目如下图所示,也可以在LeetCode题目中找到此题。
题目解析
题目提供素材
题目中提供的素材十分有限。
- 只有一个整型数字X。
注意:这里的整型数字的取值范围是当前整型结构的最大区间。
我的解读
从题目描述中,已经给出了几个示例,比如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; } }