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).
這道題有點(diǎn)意思
public int findNthDigit(int n) {
long i = 0;
int start = 1;
int len = 1;
long val = 9; //注意溢出
//找到落在哪個(gè)區(qū)域
while(n > ( i = len * val)){
n -= i; //注意溢出狸吞?
len ++;
val = val * 10;
start = start * 10;
}
//找到對(duì)應(yīng)數(shù)字是多少
int num = start + (n - 1)/len;
//找到對(duì)應(yīng)數(shù)字的位數(shù)
String s = Integer.toString(num);
return Character.getNumericValue(s.charAt((n - 1) % len));
}