[LeetCode][400]第 N 位数字
class Solution {
public:
int findNthDigit(int n) {
int numDigits = 1; // 初始化数字位数
long long int numCount = 9; // 当前数字位数所包含的数字个数
// 确定给定数字所在的位数
while (n - numCount * numDigits > 0) {
n -= numCount * numDigits;
numDigits++;
numCount *= 10;
}
// 确定实际数字
int num = pow(10, numDigits - 1) + (n - 1) / numDigits;
// 确定所找数字的位数
int digitIndex = (n - 1) % numDigits;
// 将数字转换为字符串并获取指定位上的数字
std::string numStr = std::to_string(num);
return numStr[digitIndex] - '0';
}
};