The challenge
Given a number, write a function to output its reverse digits. (e.g. given 123 the answer is 321)
Numbers should preserve their sign; i.e. a negative number should still be negative when reversed.
Examples
123 -> 321
-456 -> -654
1000 -> 1
The solution in Java code
Option 1:
public class ReverseNumber {
public static int reverse(int number) {
int result = 0;
while(number != 0) {
result = result * 10 + number % 10;
number = number / 10;
}
return result;
}
}
Option 2:
public class ReverseNumber {
public static int reverse(int n) {
return Integer.valueOf(new StringBuilder(""+n)
.reverse()
.toString()
.replace("-","")
) * Integer.signum(n);
}
}
Option 3:
public class ReverseNumber {
public static int reverse(int number) {
String temp = "";
if(number < 0){
temp += "-";
number = Math.abs(number);
}
String num = "" + number;
for(int i = num.length()-1; i >= 0; i--){
temp += num.charAt(i);
}
return Integer.parseInt(temp);
}
}
Test cases to validate our solution
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class ReverseNumberTest {
@Test
public void reverse() throws Exception {
assertEquals( 321, ReverseNumber.reverse( 123 ) );
assertEquals( -321, ReverseNumber.reverse( -123 ) );
assertEquals( 1, ReverseNumber.reverse( 1000 ) );
assertEquals( 4321234, ReverseNumber.reverse( 4321234 ) );
assertEquals( 5, ReverseNumber.reverse( 5 ) );
assertEquals( 89898989, ReverseNumber.reverse( 98989898 ) );
}
}