反转整数

给定一个 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<chs.size();i++){

        //从最高位起 乘以10^(chs.size()-1-i)

        rs=(int) (rs+chs.get(i)*Math.pow(10,chs.size()-1-i));

           }

    if(rs>((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);

        }

    }

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 给定一个32位有符号整数,将整数中的数字进行反转(假设我们的环境只能存储32位有符号整数,其数值范围是[−2(31...
    _ool阅读 5,185评论 0 1
  • 20180919-摘抄自7. 反转整数 给定一个 32 位有符号整数,将整数中的数字进行反转。 示例 1: 输入:...
    moralok阅读 3,222评论 0 0
  • BAT面试算法进阶(6)- BAT面试算法进阶(6)-最长回文子串(方法二)BAT面试算法进阶(5)- BAT面试...
    CC老师_HelloCoder阅读 4,402评论 0 0
  • 一:项目级别设置 菜单“数据”——“数据源”——“日期属性”,可以在项目级别对数据源中所有的日期字段统一设置如下三...
    悠长假日阅读 19,199评论 0 6
  • 有时候 不忘初心
    雨亭子阅读 1,157评论 0 0