码迷,mamicode.com
首页 > 其他好文 > 详细

【LeetCode】7. 整数反转

时间:2019-11-03 11:00:22      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:new   来源   view   http   closed   while   flag   play   链接   

题目

给出一个 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. 整数反转

标签:new   来源   view   http   closed   while   flag   play   链接   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!