当前位置: 首页 > 知识库问答 >
问题:

反向整数(Leetcode)

凌翔宇
2023-03-14

我在试着解7。反向整数在leetcodehttps://leetcode.com/problems/reverse-integer/.

给定一个有符号的32位整数x,返回x并反转其数字。如果反转x导致值超出有符号32位整数范围[-2^31,2^31-1],则返回0。

例1:

Input: x = 123  
Output: 321

我对上述问题的解决方案是

class Solution {  
    public int reverse(int x) {  
        int num=0;  
        if(x>Integer.MAX_VALUE||x<Integer.MIN_VALUE) return 0;  
        while(x!=0){  
            int a=x%10;  
            num=num*10+a;  
            x=x/10;  
            
            
        }  
        return num;  
    }  
}  

我弄错了4个测试用例。其中之一是:

示例

Input: 1534236469  
Output : 1056389759  
Expected: 0  

共有3个答案

皮景龙
2023-03-14

输入:123输出:321输入:-123输出:-321输入:120输出:2

类解决方案{公共: int反向(int x){

    int rev = 0;

    constexpr int top_limit = INT_MAX/10;

    constexpr int bottom_limit = INT_MIN/10;

    while (x) {

        if (rev > top_limit || rev < bottom_limit)

            return 0;

        rev = rev * 10 + x % 10;

        x /= 10;
    }
    return rev;
}

};

庄实
2023-03-14

你选择的方法并不遥远。

  1. 您当前检查输入x是否在无符号整数范围内。但他们要求检查x射线
  2. 您将答案聚合为一个整数,因此可能会在未被注意的情况下溢出

如果将结果num聚合到一个long类型的变量中,如果在反转后结果超出无符号int的范围,则拒绝/归零,这两个问题都可以解决。

你也可以用数学。补遗(a,b),数学。在溢出后立即退出multiplyExact(a、b)和try catch。

谢财
2023-03-14

您的问题是溢出在num变量中,您没有检查它。在执行num=num*10a之前,通过添加检查以确保计算不会溢出,您可以在必要时返回0

此外,你没有正确处理负数。预先检查一个负数可以让你处理一个正数,然后直接否定结果。

class Solution {  
    public int reverse(int x) {  
        int num=0;  
        Boolean negative = false;
        
        if (x < 0) {
            x = -x;
            negative = true;
        }
        while(x!=0){  
            int a=x%10; 
            // Check if the next operation is going to cause an overflow
            // and return 0 if it does
            if (num > (Integer.MAX_VALUE-a)/10) return 0;
            num=num*10+a;  
            x=x/10;  
        }  
        return negative ? -num : num;  
    }  
} 
 类似资料:
  • 下面的问题是我想反转一个整数的位数。 < li >例1: x = 123,返回321 < li >示例2: x = -123,return -321 我的代码适用于9位数以下的所有情况。如果是10位输入,则不会写入相反的值。我该怎么做? 我的代码是:

  • 问题是:整数的倒数。 示例1:x=123,返回321 例2:x=-123,返回-321 你注意到反整数可能会溢出吗?假设输入是32位整数,则100000003溢出的相反值。你应该如何处理此类案件? 抛出异常?很好,但是如果抛出异常不是一个选项呢?然后必须重新设计函数(即,添加一个额外的参数)。 从我搜索的网站的解决方案是: 但是,当时,控制台会打印,而不是。因此,如果我们不能使用异常,这个解决方案

  • 尝试了所有方法来通过测试用例,但仍然只显示一个错误。我不知道如何纠正这个错误。 输入:1534236469 实际输出:1056389759 预期输出:0 我不知道为什么我的代码没有给出输出0。

  • 本文向大家介绍使用JavaScript返回整数的反向数组,包括了使用JavaScript返回整数的反向数组的使用技巧和注意事项,需要的朋友参考一下 问题 我们需要编写一个JavaScript函数,该函数接受一个数字并返回一个元素数组,其中包含从n到1的所有自然数。 输入 输出 示例 以下是代码- 输出结果

  • 我对编码和练习leetcode问题还不熟悉。整数反向问题涉及溢出。 我已经搜索并讨论了关于如何处理溢出的大部分内容。有人能解释一下溢出的原因吗?

  • 我的反向整数代码在LeetCode上不被接受。 我检查了我的程序是否可以返回正确答案。 对于一个输入的情况,我的程序返回正确的输出。 但是有错误,我的代码不被接受。什么是问题,我应该如何修复我当前的代码?