码迷,mamicode.com
首页 > 其他好文 > 详细

数字的逆序

时间:2018-11-26 02:06:21      阅读:216      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!