标签:abs return 长度 个数 示例 ring 环境 取绝对值 范围
问题描述:
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [?2^31, 2^31 ? 1]。
[-2147483648,2147483647]
请根据这个假设,如果反转后整数溢出那么就返回 0。
思想:我个人在做这个题的时候,我首先想到的是统计输入的数字的个数,它总共有多少位数?它是正的还是负的?
最后就是一般的计算
1> 输入x,为了消除正负号,我们第一步是将数字取绝对值,int y = Math.abs(x)
2> 将y转换成字符串,计算字符串的长度,那么字符串长度就是数字的位数
3> 用一般的方法将数字逆转
下面我们用一个方法实现:
public int reverse(int x){
//将x先赋给t最后判断输入x的正负号
int t = x;
//取绝对值
int y = Math.abs(x);
String s = (String) (x+"");
int sum = 0;
for(int i = 0;i<s.length();i++){
sum += y%10*Math.pow(10,s.length() - i - 1);
y = y/10;
}
if(-sum<Integer.MIN_VALUE||sum>Integer.MAX_VALUE-1)
return 0;
if(t>=0)
return sum;
else
return -sum;
}
以上代码就是这个题的解题代码
这个题也可以用BigInteger类来解决,不过我觉得有点麻烦
标签:abs return 长度 个数 示例 ring 环境 取绝对值 范围
原文地址:https://www.cnblogs.com/duy666/p/10018253.html