// ------------------
// ReverseDigits.java
// ------------------
final class ReverseDigits {
/**
* O(n) in space
* O(n) in time
*/
private static long eval (long n, long m) {
if (n == 0)
return m;
return eval(n / 10, (10 * m) + (n % 10));}
/**
* O(n) in space
* O(n) in time
*/
public static long eval (long n) {
return eval(n, 0);}}
final class ReverseDigitsTest {
public static void main (String[] args) {
System.out.println("ReverseDigits.java");
assert ReverseDigits.eval( 0) == 0;
assert ReverseDigits.eval( 1) == 1;
assert ReverseDigits.eval( 9) == 9;
assert ReverseDigits.eval( 10) == 1;
assert ReverseDigits.eval( 12) == 21;
assert ReverseDigits.eval( 99) == 99;
assert ReverseDigits.eval( 100) == 1;
assert ReverseDigits.eval( 102) == 201;
assert ReverseDigits.eval( 195) == 591;
assert ReverseDigits.eval( 999) == 999;
assert ReverseDigits.eval(-195) == -591;
System.out.println("Done.");}}
syntax highlighted by Code2HTML, v. 0.9.1