面试题44. 数字序列中某一位的数字(找规律)

221 阅读1分钟

public class Num44数字序列中某一位的数字 {

    public int findNthDigit(int n) {
        long i = 1, s = 9, base = 1;
        //找到是几位数
        while (n > i * s) {
            n -= i * s;
            i++;
            s *= 10;
            base *= 10;
        }
        //找到几位数中的第几个
        long number = base + (n + i - 1) / i - 1;
        //找到number中的第几位
        long r = n % i == 0 ? i : n % i;
        for (int j = 0; j < i - r; j++) number /= 10;
        return (int)number % 10;
    }
}