剑指Offer-44数字序列中某一位的数字

public int findNthDigit(int n) {
    // 表示几位数
    int digit = 1;
    // 几位数开始的数字
    long start = 1;
    // 几位数一共有多少个
    long count = 9;
    // 确定所在数字的是多少位的
    while (n > count) {
        n -= count;
        digit += 1;
        // 总结出来的规律
        start *= 10;
        count = digit * start * 9;
    }
    // 确定所在数字
    long num = start + (n - 1) / digit;
    // 确定所在数字的哪一位 -'0'转为整形
    return Long.toString(num).charAt((n - 1) % digit) - '0';
}

猜你喜欢

转载自blog.csdn.net/a792396951/article/details/114013995