整数的反转数字。
示例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());
}
}
答案 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
}