//java
public class Solution {
public int findNthDigit(int n) {
int size = 1;
long step = 9;
long prob = 9;
int start = 1;
while (n > prob) {
size += 1;
step *= 10;
start *= 10;
n -= prob;
prob = step * size;
}
long number = start + (n - 1) / size;
int pos = (n - 1) % size;
return (number + "").charAt(pos) - '0';
}
}class Solution {
public int findNthDigit(int n) {
if (n <= 9) return n;
int step = 0;
int count = 0;
int prevCount = 0;
while (count < n) {
prevCount = count;
count += (Math.pow(10, step + 1) - Math.pow(10, step)) * (step + 1);
step++;
}
// 例如 1-9 有9个,10-99 有90*2个,100-999有900*3个...
int numPos = (n - prevCount + 1) / step;
int num = (int)Math.pow(10, step - 1) + numPos - 1;
System.out.println(num);
int pos = (n - 1 - prevCount) % step;
return String.valueOf(num).charAt(pos) - '0';
}
}