java - 处理反向整数溢出
问题描述
它实际上与问题Reverse Integer leetcode - 如何处理溢出有关,以反转整数的数字,同时在反转整数溢出时返回 0。
所以它应该是:
输入:-123,返回:-321
输入:1500032455,返回:0
我可以反转正常情况下的数字,但不能反转溢出情况,我检查了上面的链接,我的有点笨重..但我想它应该工作相同?有人可以建议吗?
public int reverse(int x) {
boolean isPositive = true;
if (x < 0){
isPositive = false;
x = x * -1;
}
int length = String.valueOf(x).length();
int[] digit = new int[length];
for (int i = 0; i < length; i++){
digit[i] = x % 10;
x = x / 10;
}
int solution = 0;
for (int j = 0; j < length; j++){
solution = solution + digit[length-j-1] * (int) Math.pow(10,j);
}
if (solution > Integer.MAX_VALUE){
return 0;
}
return (isPositive == false) ? -solution : solution;
}
}
解决方案
我认为有一种更简单的方法可以做到这一点。尝试 :
int reverse(int num)
{
char[] number = String.valueOf(num > 0 ? num : -num).toCharArray();
for(int i=0; i< number.length/2;i++)
{
char temp = number[i];
number[i] = number[n-i];
number[n-i] = temp;
}
BigInteger Num = new BigInteger(new String(number));
if(Num.compair(BigInteger.valueOf(Integer.MAX_INTEGER)) >= 0) return 0; // Or throw an Exception.
else return Integer.praseInt(new String(number)) * (num >0 ? 1 : -1);
}
您可以使用它来反转大于 Integr.MAX_INTIGER 的数字,只需替换函数的返回类型并更改最后一个 if 语句。
推荐阅读
- python-3.x - 如何从 csv 读取数据以将它们提供给 cnn?
- python - 在 TensorFlow 中设置交集
- python - 如何在转移后留下 NaN
- javascript - React - 在未安装的组件上设置状态
- java - 组合来自一张表的多个 SELECT 查询结果
- python - 在 Python 中使用 unicode 变量名
- sql - 将 Drill 表中的数据加载到 Hive 表中
- c# - 当我将 Crystal Reports 与 SQL Server 连接时出现问题没有响应
- spring - 如何将请求数据从 Spring MVC 控制器传送到 Spring RestTemplate
- amazon-web-services - STS API 返回的 AWS_SESSION_TOKEN 的功能是什么?