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

  • 相关阅读:
    Asp中JSON的使用
    POJ 3243 Clever Y Extended-Baby-Step-Giant-Step
    [Java开发之路](16)学习log4j日志
    【剑指Offer学习】【面试题49:把字符串转换成整数】
    负载均衡器&amp;http正向代理
    Android应用开发经常使用知识
    java8_api_nio
    李洪强经典面试题25(选择题)
    李洪强经典面试题24
    李洪强经典面试题23
  • 原文地址:https://www.cnblogs.com/WilsonPan/p/11785277.html
Copyright © 2011-2022 走看看