leetcode findnthdigit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class  {
public int findNthDigit(int n) {

* 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.
*
* width count
* 1-9: 1 9
* 10-99: 2 90
* 100-999: 3 900
*
* w, c = 1, 9 // width and count of numbers (of each level)
* while n > w*c:
* n -= w*c
* w += 1
* c *= 10
* num, d = (c/9) + (n-1)/w, (n-1)%w // c/9 is equals to 10**w, means the base number
* return int(str(num)[d])
*/
if (n < 10) {
return n;
} else if (n < 100) {
if (n % 2 == 0) {
return n;
}
}
return n;
}
}