7.整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
思路:先转成字符数组,先判断是否为负数,再依次遍历每个元素,转成整数,借助long类型来判断int类型溢出
缺点:类型转换时间复杂度高,字符数组使空间开销变大
class Solution {
public int reverse(int x) {
//将数字转换成数组再逆置求出最后的值
String n=new String(x+""); //String类型每个元素均为字符串,且一旦创建就不能改变
char[] nums = n.toCharArray();//将字符串转化成字符数组,遍历
int start=0;
long sum=0;
long count=1;
if(nums[0]>'9' || nums[0]<'0')
if (nums[0]=='-')
start=1;
else
return 0;
for(;start<nums .length;start++){
sum+=Integer.parseInt(String.valueOf(nums[start]))*count;//将字符型转成整型
count*=10;
}
if (nums[0]=='-')
sum=0-sum;
if(sum>Integer.MAX_VALUE||sum<Integer.MIN_VALUE)
sum=0;
return (int)sum;
}
}
执行用时:10 ms, 在所有 Java 提交中击败了6.70%的用户
内存消耗:36.4 MB, 在所有 Java 提交中击败了12.02%的用户
其他方法: