LeedCode 之 Reverse Integer
来源:互联网 发布:线下数据采集 编辑:程序博客网 时间:2024/05/28 14:57
目前先是挑选LeedCode上简单的题目来做~
题目链接:Reverse Integer
看到题目第一想法是:将整数转换为字符串,再使用字符串的反转函数reverse()函数将其反转,最后转为整数输出即可~
在这其中考虑到有负数的情况,所以先去绝对值进行反转处理,最后根据整数的正负情况返回对应的值~
其中需要注意的最重要的问题是整数越界
(因为整数越界调了将近1个小时,才解决,我太菜了 ̄へ ̄)
1、int类型的MIN_VALUE为-2147483648,取绝对值后比MAX_VALUE大产生,直接使用abs()函数无法取得正确的绝对值,因此首先对MIN_VALUE进行处理。
2、反转前后的值都不能产生越界,这里我使用整数—字符串—整数,因为没能判断反转后是否越界,在将字符串转为整数时,出现报错 “java.lang.NumberFormatException”,解决方法将取绝对值后的值的类型定义为long类型。
3、最后需要对反转后的num判断时候整数越界了
代码如下:
public class ReverseInteger { public int reverse(int x) { if(x==Integer.MIN_VALUE) return 0;//int类型MIN_VALUE的绝对值比MAX_VALUE的绝对值大1,使用abs()函数无法取得正确的绝对值,所以需要对其先进行处理,其值为-2147483648,个位数为8,反转后肯定是越界了的 long num = (long) Math.abs(x);//将取绝对值后的数定义为Long类型的,因为之后将其反转,如果整数越界了,则将String类型转为Int类型会报“java.lang.NumberFormatException”错误。 String str; str = Long.toString(num); String reverse = new StringBuffer(str).reverse().toString(); num = Long.parseLong(reverse); System.out.println(num); if (num > Integer.MAX_VALUE || -num < Integer.MIN_VALUE) //这里判断反转后的数值是否越界 return 0; return (int) (x>0?num:-num); }}
同样是查看了网上其他人的解法,发现和自己的思路完全不同,是将其作为纯数学解法来的,于是乎尝试用相同解法~
1、同样是需要将反转后的数值先定义为long类型的
2、并需要判断反转后时候整数越界
public int reverseMath(int x){ if(x == 0) return x; long tmp = 0; while(x!=0) { tmp = tmp*10 + x%10; x = x/10; } System.out.println(tmp); if (tmp > Integer.MAX_VALUE || tmp < Integer.MIN_VALUE) return 0; return (int)tmp; }
这么一个看似简单的题目,因为整数越界的问题,搞了快一个下午了,嘤嘤嘤,该怎么说好呢~ 不过最终还是解决了
0 0
- LeedCode 之 Reverse Integer
- LeedCode Reverse Integer
- [LeedCode OJ]#7 Reverse Integer
- LeedCode 之 Integer to Roman
- leedcode做题总结,题目Reverse Integer----- 2011/12/25
- leetcode之Reverse Integer
- LeetCode 之 Reverse Integer
- LeetCode之Reverse Integer
- LeetCode之Reverse Integer
- LeetCode之Reverse Integer
- Leetcode之Reverse Integer
- leetcode之Reverse Integer
- LeetCode之Reverse Integer
- 【Leetcode】之Reverse Integer
- LeetCode 之 Reverse Integer
- leetcode之 Reverse Integer
- leetcode之reverse Integer
- LeetCode之Reverse Integer
- 华硕 X99 E WS 安装 macOS Sierra 10.12.4
- 线索二叉树
- 插值算法总结
- Mac下的AS快捷键
- hist的使用
- LeedCode 之 Reverse Integer
- 二叉树的递归建立和遍历
- 集合框架-静态导入
- POJ 1743 Musical Theme <后缀数组+二分>
- linux lsof命令详解
- C#中Split用法~
- 你不知道XML编程的那些事儿(一)
- HTML的新特性
- Java安全加密