p66 反转整数 (leetcode 7)

一:解题思路

解析:在C++和Java中,-3%10=-3。在Python中,-3%10=7。

方法一:采用一个长整型y来保存结果,每次迭代过程为 y=y*10+x%10。

方法二:如果系统中不允许使用long型,这个时候则需要就要采用方法二。

二:完整代码示例 (C++版和Java版)

第一种方法C++:

class Solution {
public:
    int reverse(int x)
    {
        int max = 2147483647;
        int min = -2147483648;
        long y = 0;

        while (x!=0)
        {
            y = y * 10 + x % 10;
            x /= 10;

            if (y > max || y < min) return 0;
        }

        return (int)y;
    }
};

第一种方法Java:

class Solution
{
    public int reverse(int x)
    {
           int max=Integer.MAX_VALUE;
           int min=Integer.MIN_VALUE;
           long y=0;

           while(x!=0)
           {
               y=y*10+x%10;
               x/=10;

               if(y>max||y<min) return 0;
           }

           return (int)y;
    }
}

第二种方法C++:

class Solution {
public:
    int reverse(int x)
    {
        int max = 2147483647/10;
        int min = -2147483648/10;
        int y = 0;

        while (x!=0)
        {
            if (y > max || y < min) return 0;

            y = y * 10 + x % 10;
            x /= 10;

        }

        return y;
    }
};

第二种方法Java:

class Solution
{
    public int reverse(int x)
    {
           int max=Integer.MAX_VALUE/10;
           int min=Integer.MIN_VALUE/10;
           int y=0;

           while(x!=0)
           {
               if(y>max||y<min) return 0;

               y=y*10+x%10;
               x/=10;
           }

           return y;
    }
}

原文地址:https://www.cnblogs.com/repinkply/p/12532608.html

时间: 2024-10-08 17:05:39

p66 反转整数 (leetcode 7)的相关文章

leetcode——Reverse Integer 反转整数数字(AC)

Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 这个题比较简单,考虑特殊情况如12000,注意检查反转后数字是否会越界溢出.代码如下: class Solution { public: int reverse(int x) { bool minus = false; short int splitNum[10]; int i = 0, j = 0; unsign

关于反转整数

在leetcode上就见了这题: 经典的反转整数,遇见过很多次了,本以为很简单,分分钟码出来,结果却大失所望,哎,看来以后还是得多想想特殊情况呀~~ 不多说,先把坑挖出来,一共两个坑: 1.反转后可能溢出,此时应该返回0: 2.关于尾数为0时,应舍去: 由于采用数学方法获取各位数,并非用文本反转,所以坑2就不用考虑了, 关键是坑1,如何判别溢出呢?可以通过获取INT_MAX和INT_MIN来辅助,由于是乘法溢出,故采用将最值除上相应值,这样避免判断最值情况. 一切尽在代码中: class Sol

【0031】反转整数/判断回文

Reverse Integer 反转一个整数 C++ Code 1234567891011121314151617181920212223242526272829303132   class Solution{public:    int reverse(int x)    {        /*一位数的情况*/        if(-10 < x && x < 10)        {            return x;        } /*记录负数情况,负数转换成正

leetcode刷题日记——反转整数

给定一个 32 位有符号整数,将整数中的数字进行反转. 这里考虑,交换时,需要注意位数不同,需要乘上对应的位数,代码如下: int reverse(int x) { int result = 0; while(x != 0) { int tmp = result * 10 + x % 10; //转换的中间值 x = x / 10; //每循环一次,x位数减少一位 if(tmp / 10 != result) //验证数据是否正确 { result = 0; break; } result =

LeetCode刷题-007反转整数

给定一个 32 位有符号整数,将整数中的数字进行反转.示例 1:输入 : 123输出 : 321示例 2:输入 : ‐123输出 : ‐321示例 3:输入 : 120输出 : 21注意 :假设我们的环境只能存储 32 位有符号整数,其数值范围是 [?2 31 , 2 31 ? 1].根据这个假设,如果反转后的整数溢出,则返回 0. 1 class Solution { 2 public: 3 int reverse(int x) { 4 const int int_max=0x7fffffff

Leetcode 7 反转整数

给定一个 32 位有符号整数,将整数中的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [?231,  231 ? 1].根据这个假设,如果反转后的整数溢出,则返回 0. 解答: class Solution: def reverse(self, x): """ :type x: int :rtype: int

【leetcode 简单】第二题 反转整数

给定一个 32 位有符号整数,将整数中的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: 21 注意: 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [?231,  231 ? 1].根据这个假设,如果反转后的整数溢出,则返回 0. class Solution(object): def reverse(self, x): """ :type x: int :rtype:

LeetCode Reverse Integer 反转整数

1 class Solution { 2 public: 3 int reverse(int x) { 4 int e,s,num,k=0; 5 num=x; 6 e=0; 7 if(x<0) 8 num=-1*x; 9 while( num!=0 ){ 10 s=num%10; 11 e=e*10+s; 12 num=num/10; 13 k++; 14 } 15 if(x<0) 16 return -e; 17 else 18 return e; 19 } 20 }; 题意: Exampl

Leetcode 7.反转整数 By Python

思路 python提供了方便的字符串反转方法,所以还是蛮简单的这题 注意几个坑: 0结尾的数字反转后要去除 0-9的数字不存在反转问题,直接输出就好了 代码 class Solution(object): def reverse(self, x): """ :type x: int :rtype: int """ s = str(x) if s[0] == '-': num = s[1:].lstrip('0') x = -int(num[::-