题目
7.整数反转
给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
https://leetcode-cn.com/problems/reverse-integer/
源代码及漏洞
即使通过了全部测试用例,但是用其他的测试用例跑却解不出正确答案。
漏洞分析
因为本人是个菜鸟,在第一次提交的时候看到只剩下这一个测试用例没有跑过,以为是某种特殊情况,直接添加if判断提交了。
然后就出现了投机取巧的代码,虽然通过了这道题,但是依旧是有bug的。
这道题的测试用例我觉得应该再多一些。所以总的来说,就是这道题测试用例不够多。可能是我太菜了。。。。。。。
再来说说正确解法吧。
正确的三种解法
思路
反转并不难,主要是溢出检测。
解法一:用long类型
不做多余解释
long ret =0;
while(x!=0)
{
ret=ret*10+x%10;
x/=10;