今天在看JDK源码的时候,发现Integer求正数位数的方法,和自己写的方法差异比较大,而且效率很高,具体方法如下:
1 final static int [] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999, 2 99999999, 999999999, Integer.MAX_VALUE }; 3 4 // Requires positive x 5 static int stringSize(int x) { 6 for (int i=0; ; i++) 7 if (x <= sizeTable[i]) 8 return i+1; 9 }
简单来说,就是如果x小于等于9,那就是1位数,小于等于99,就是2位数,和自己之前写的用取模方法相比,这种方法的时间复杂度几乎是O(1)