反转整数

给定一个 32 位有符号整数,将整数中的数字进行反转。

示例 1:

输入:123输出:321

示例 2:

输入:-123输出:-321

示例 3:

输入:120输出:21

注意:

假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。

思路:

1.输入一个数,逆序将每个字符存入集合中。

1.1如果输入的负数,先求绝对值,再调用反转函数,返回时加负号即可。

1.2为了减少空间使用量,直接将各个字符存入集合。如果使用数组的话,需要先计算一次求出位数,再计算一次放入数组。

2.集合中的字符和10的n次方对应相乘求和,得出反转数。

2.1反转数大于 2^31 − 1,返回0。

代码:

    package    code_007_ReverseInteger;

    import    java.util.ArrayList;

    import    java.util.Scanner;

    public class Test {

        public    static    int    reverse(int    x) {

            int    rs=0;

            //输入正数

            if(x>0) {

                rs=getResult(x);

            return    rs;

    }

    else{

        //输入负数 先求绝对值

        x=Math.abs(x);

        rs=getResult(x);

        //返回负值

        return    -rs;

        }

    }

    public    static    int    getResult(int    x) {

    //该集合用来逆序存储整数

       ArrayList    chs=newArrayList();

        int    rs=0;

        while(x>0) {

            //对10取余,加入集合

            chs.add(x%10);

            //x递归

            x=x/10;

        }

    for(int    i= 0;i((int)Math.pow(2, 31)-1)) {

        //大于2^31-1,返回0

        rs=0;

        }

    return rs;

    }

    public    static    void    main(String[]args) {    

        Scanner    scanner=newScanner(System.in);

        int    x=scanner.nextInt();

        reverse(x);

        }

    }

你可能感兴趣的:(反转整数)