反向整数

时间:2017-01-23 17:49:38

标签: java reverse

整数的反转数字。

示例1:x = 123,返回321 例2:x = -123,返回-321

我试图使用下面的代码来解决整数反转问题。但是当我将int转换为字符串然后将字符串转换回int时,就会出现错误。我想知道内存分配是否限制了这种方法。

错误是第4行:错误:不兼容的类型:从long到int的可能有损转换

public class Solution {
    public long reverse(int x) {
        String input = String.valueOf(x);
        char[] num = input.toCharArray();
        StringBuffer reverse = new StringBuffer();
        if(x<0){
            reverse.append("-");
            for(int i=num.length-1;i>0;i--){
                reverse.append(num[i]);
            }
        }else{
            for(int i=num.length-1;i>=0;i--){
                reverse.append(num[i]);
            }
        }
        return Long.parseLong(reverse.toString());
    }
}

3 个答案:

答案 0 :(得分:3)

它完成了你所要求的。

ERROR in ./jsx/index.jsx
Module not found: Error: Cannot resolve module 'autoprefixer-loader' in /Users/alessandro.santese/Desktop/Alessandro/AIA/projects/accenture-tshirtbuilder/tshirtbuilder/jsx
 @ ./jsx/index.jsx 21:0-43

ERROR in ./jsx/index.jsx
Module not found: Error: Cannot resolve module 'autoprefixer-loader' in /Users/alessandro.santese/Desktop/Alessandro/AIA/projects/accenture-tshirtbuilder/tshirtbuilder/jsx
 @ ./jsx/index.jsx 23:0-37

ERROR in ./jsx/index.jsx
Module not found: Error: Cannot resolve module 'autoprefixer-loader' in /Users/alessandro.santese/Desktop/Alessandro/AIA/projects/accenture-tshirtbuilder/tshirtbuilder/jsx
 @ ./jsx/index.jsx 25:0-43

ERROR in ./jsx/index.jsx
Module not found: Error: Cannot resolve module 'autoprefixer-loader' in /Users/alessandro.santese/Desktop/Alessandro/AIA/projects/accenture-tshirtbuilder/tshirtbuilder/jsx
 @ ./jsx/index.jsx 27:0-40

ERROR in ./jsx/index.jsx
Module not found: Error: Cannot resolve module 'autoprefixer-loader' in /Users/alessandro.santese/Desktop/Alessandro/AIA/projects/accenture-tshirtbuilder/tshirtbuilder/jsx
 @ ./jsx/index.jsx 29:0-38

ERROR in ./jsx/index.jsx
Module not found: Error: Cannot resolve module 'autoprefixer-loader' in /Users/alessandro.santese/Desktop/Alessandro/AIA/projects/accenture-tshirtbuilder/tshirtbuilder/jsx
 @ ./jsx/index.jsx 31:0-38

ERROR in ./jsx/index.jsx
Module not found: Error: Cannot resolve module 'autoprefixer-loader' in /Users/alessandro.santese/Desktop/Alessandro/AIA/projects/accenture-tshirtbuilder/tshirtbuilder/jsx
 @ ./jsx/index.jsx 33:0-39

public static long reverseInteger(int n){ String answer = ""; if (n == Integer.MIN_VALUE) return -8463847412L; boolean negative = false; if (n < 0) { negative = true; n = -n; } while (n > 0) { answer += (n % 10); n = n/10; } long toReturn = Long.parseLong(answer); return (negative) ? -toReturn : toReturn; } 关键字当然是可选的。 这取决于你如何使用它。

答案 1 :(得分:1)

您收到的错误消息可能是由于您的代码中的其他位置;也许你要将id=9(这是一个很长的)返回的值赋给reverse()变量。

但是,代码中存在不必要的低效率。您正在创建int,只是将其重新解析为一个数字。以下代码返回一个反转的数字,而根本不使用任何字符串:

String

请注意,此方法也适用于负数,而无需专门检查它们。

此方法适用于所有可能的public static long reverse(int n){ long r = 0; while (n != 0) { r *= 10; r += (n % 10); n /= 10; } return r; } 值。

答案 2 :(得分:-1)

这样的工作:

public long reverse(int x) {
    String input = String.valueOf(x); //123
    long result = Long.parseLong(new StringBuilder(input).reverse().toString());
    return result; //321
}