首页 > 其他 > 详细

【LeetCode】7. 整数反转

时间:2019-11-03 12:04:29      阅读:61      评论:0      收藏:0      [点我收藏+]

题目

给出一个 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

 

【LeetCode】7. 整数反转

原文:https://www.cnblogs.com/WilsonPan/p/11785277.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!