Leetcode: Nth Digit
Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... Note: n is positive and will fit within the range of a 32-bit signed integer (n < 231). Example 1: Input: 3 Output: 3 Example 2: Input: 11 Output: 0 Explanation: The 11th digit of the sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... is a 0, which is part of the number 10.
1-9 : count:9 * len:1
10-99: count:90 * len:2
100-999: count:900 * len:3
1000-9999: count: 9000 * len:4
maintain a count, len, start
1 public class Solution { 2 public int findNthDigit(int n) { 3 int start = 1; 4 int len = 1; 5 long count = 9; 6 while (n > len*count) { 7 n -= len*count; 8 start *= 10; 9 len ++; 10 count *= 10; 11 } 12 start += (n-1)/len; 13 char res = Integer.toString(start).charAt((n-1)%len); 14 return Character.getNumericValue(res); 15 } 16 }