1 public class Test
2 {
3 final static int[] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999, Integer.MAX_VALUE };
4
5 static int sizeOfInt(int x)
6 {
7 for (int i = 0;; i++)
8 if (x <= sizeTable[i])
9 return i + 1;
10 }
11
12 public static String reverse(String originStr)
13 {
14 if (originStr == null || originStr.length() <= 1)
15 return originStr;
16 return reverse(originStr.substring(1)) + originStr.charAt(0);
17 }
18
19 public static Integer reverse(int value)
20 {
21 if (value < 10)
22 {
23 return value;
24 }
25 return (value % 10) * (int)Math.pow(10, sizeOfInt(value) - 1) + reverse(value / 10);
26 }
27
28 public static void main(String[] args)
29 {
30 System.out.println(reverse("helloworld"));
31 System.out.println(reverse(123456789));
32
33 }
34 }