class Solution {
public:
int findNthDigit(int n) {
int digit = 1; //位数
long start = 1; //位数起始值
long count = 9;
while (n > count) { // 1.确定所求数位的所在数字的位数
n -= count;
digit += 1; // 1, 10, 100, ...
start *= 10; // 1, 2, 3, ...
count = digit * start * 9;
}
long num = start + (n - 1) / digit; // 2.确定所求数位所在的数字
return to_string(num)[(n - 1) % digit] - '0'; // 3.确定所求数位在num的哪一数位
}
};
剑指 Offer 44. 数字序列中某一位的数字
最新推荐文章于 2024-08-17 08:45:02 发布