数字的逆序
Posted duy666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字的逆序相关的知识,希望对你有一定的参考价值。
问题描述:
给出一个 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类来解决,不过我觉得有点麻烦
以上是关于数字的逆序的主要内容,如果未能解决你的问题,请参考以下文章
剑指Offer(Java版)第四十题:在数组中的两个数字,如果前面一个数字大于后面的数字, 则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。 并将P对1000000007取模