数字的逆序

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

 











以上是关于数字的逆序的主要内容,如果未能解决你的问题,请参考以下文章

JAVA输入一个数字逆序输出?

1060: 逆序数字

剑指Offer(Java版)第四十题:在数组中的两个数字,如果前面一个数字大于后面的数字, 则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。 并将P对1000000007取模

给出一个5位数,按逆序输出它的各位数字。如:输入12345,输出54321.

逆序数

ZZNUOJ_C语言1101:逆序数字(函数专题)(完整代码)