数字的逆序

问题描述:

给出一个 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类来解决,不过我觉得有点麻烦

猜你喜欢

转载自www.cnblogs.com/duy666/p/10018253.html
今日推荐