一、LeetCode 刷题之数据类型溢出问题(1)

it2023-10-11  65

文章目录

1:Reverse Integer

1:Reverse Integer

题目描述: 输入:红圈的范围 输出:整数的翻转

分析: 考察,int类型整数的取值范围 样例输入:1534236469,翻转后9*******5时,在乘以10得90多亿超出20多亿的int范围 解决办法:在乘以10之前判断,超过了就返回0,break掉

private static int reverse(int x) { int num = 0; int yu; while (x != 0) { yu = x % 10; // 关键点在于num*10会溢出 // num * 10 < Integer.MIN_VALUE || num *10 > Integer.MAX_VALUE 溢出 // 但是乘以10后就已经溢出了,所以后者除10 if (num < Integer.MIN_VALUE/10 || num > Integer.MAX_VALUE/10){ num = 0; break; } num = yu + num * 10; x = x / 10; System.out.println(num); } return num; }
最新回复(0)