public class Main
{
	public static void main(String[] args) {
	    int cnt = 111111111;
	    
	    long start = System.currentTimeMillis();
		for(long i = 1; i < cnt; i++) {
		    int[] res = digitizeStr(i);
		}
		long finish = System.currentTimeMillis();
        long timeElapsed = finish - start;
        System.out.println("digitizeStr: " + timeElapsed);

	    start = System.currentTimeMillis();
		for(long i = 1; i < cnt; i++) {
		    int[] res = digitizeStr2(i);
		}
		finish = System.currentTimeMillis();
        timeElapsed = finish - start;
        System.out.println("digitizeStr2 (no StringBuilder): " + timeElapsed);

	    start = System.currentTimeMillis();
		for(long i = 1; i < cnt; i++) {
		    int[] res = digitize(i);
		}
		finish = System.currentTimeMillis();
        timeElapsed = finish - start;
        System.out.println("Division by 10: " + timeElapsed);
    }
	
	private static int[] digitizeStr(long n) {
	    String s = String.valueOf(n);
	    StringBuilder builder = new StringBuilder(s).reverse();
	    String result = String.valueOf(builder);
	    int[] array = new int[result.length()];
	    for(int i = 0; i < result.length(); i++) {
	        array[i] = result.charAt(i) - '0';
	    }
	    return array;
	}
	
	private static int[] digitize(long number) {
	    int length = (int)Math.log10(number) + 1;
	    int[] digits = new int[length];
	    for(int i = 0; i < length; i++) {
	        long m = number % 10;
	        number = (number - m) / 10;
	        digits[i] = (int)m;
	    }
	    return digits;
	}

    static int[] digitizeStr2(long l) {
        String value = String.valueOf(l);
        int[] array = new int[value.length()];
     
        for (int i = value.length() - 1, j = 0; i >= 0; i--, j++) {
          array[j] = Integer.parseInt(value.substring(i, i + 1));
    }
 
    return array;
  }
}
