我正试图找到一种方法来反转数字而不用
我目前正在这样做
public static int getReverse(int num){
int revnum =0;
for( int i = Integer.toString(num).length() - 1 ; num>0 ; i-- ){
revnum += num % 10 * Math.pow( 10 , i );
num /= 10;
}
return revnum;
}
但我想实施上述三个条件。
我正在寻找一种方法,可能使用位智能移位运算符或其他一些按位运算。
有可能吗?如果是这样的话?
PS:如果输入1234作为输入它应该返回4321.我只会逆转整数和长期
答案 0 :(得分:5)
怎么样:
int revnum = 0;
while (num != 0) {
revnum = revnum * 10 + (num % 10);
num /= 10;
}
return revnum;
代码需要非负输入。
这对您来说可能或不重要,但值得注意的是getReverse(getReverse(x))
不一定等于x
,因为它不会保留尾随零。
答案 1 :(得分:3)
这个怎么样?它也处理负数。
public int getReverse(int num){
int rst=0;
int sign;
sign=num>0?1:-1;
num*=sign;
while(num>0){
int lastNum = num%10;
rst=rst*10+lastNum
num=num/10;
}
return rst*sign;
}
答案 2 :(得分:0)
Integer.MAX_VALUE
或 Integer.MIN_VALUE
根本不在任何解决方案中考虑。
例如:如果输入是 -2147483647
或 2147483647
,则 o/p 将分别为 1126087180
和 -1126087180
。
请尝试以下解决方案,同时处理这两个条件,因此如果在任何时间点数字超出边界条件,即 INPUT_VALUE > Integer.MAX_VALUE
或 INPUT_VALUE < Integer.MIN_VALUE
,它将返回 {{1} }
0