zoukankan      html  css  js  c++  java
  • 【LeetCode】7. 整数反转

    题目

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

    示例 1:

    输入: 123
    输出: 321


     示例 2:

    输入: -123
    输出: -321


    解题

     解法一、转换字符串 && 反转字符串
    这里只需要判断边界(是否溢出,负数符号)
    public int Reverse(int x)
    {
        var flag = x < 0 ? -1 : 1;
    
        var str = x.ToString();
        var ans = default(long);
        if (flag > 0)
        {
                ans = long.Parse(new String(str.ToCharArray().Reverse().ToArray()));
    
            if (ans > int.MaxValue) return 0;
        }
        else
        {
            str = str.Substring(1);
            ans = long.Parse(new String(str.ToCharArray().Reverse().ToArray()));
            if ((ans - int.MaxValue) > 1) return 0;
        }
    
        return (int)ans * flag;
    }
    View Code

    解法二、数学计算

    字符串的操作是比较耗时,而且需要额外的空间

    个位 = x % 10;

    x减少一位 = x / 10

    反转数字  = ans * 10 + 个位

    不断循环直至x == 0,只需要判断溢出条件就可以

    public int Reverse(int x)
    {
        int ans = 0;
        while (x != 0)
        {
            int pop = x % 10;
            x /= 10;
    
            if (ans > int.MaxValue / 10 || ((ans == int.MaxValue / 10) && pop > 7)) return 0;
    
            if (ans < int.MinValue / 10 || ((ans == int.MinValue / 10) && pop < -8)) return 0;
    
            ans = ans * 10 + pop;
        }
    
        return ans;
    }
    View Code

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/reverse-integer

  • 相关阅读:
    设计模式6大原则依赖倒置原则
    HTML5开发HTML5入门
    设计模式6大原则迪米特法则
    设计模式6大原则接口隔离原则
    Android ROM开发ubuntu下编译CyanogenMod生成SDK
    设计模式6大原则单一职责原则
    Android杂谈修改Android系统内/system目录权限使其可读写
    [转]SMTP协议
    QQ发送邮件失败的解决办法
    开始→运行→命令集锦
  • 原文地址:https://www.cnblogs.com/WilsonPan/p/11785277.html
Copyright © 2011-2022 走看看