面试题44:数字序列中某一位的数字

面试题44:数字序列中某一位的数字

数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。

class Solution {
public:
    int findNthDigit(int n) {
        long long start=1;
        int digit=1;	// 位数;
        long long count=9;	// 数位数量;
        while(n>count)	// 找到在哪个位数中;
        {
            n-=count;
            start*=10;
            digit++;
            count=9*start*digit;
        } 
        int num = start+(n-1)/digit;	// 找到在哪个数字;
        string s=to_string(num);
        return s[(n-1)%digit]-'0';		// 找到在数字中的第几位;
    }
};
上一篇:vue一键复制


下一篇:day2021_10——30