题目不难,但是debug了半天。
1. 时刻注意溢出和边界问题
2. 当sequence从1开始,还是从0开始,这是个问题。。。
class Solution {
public:
int findNthDigit(int n) {
long cnt = 9, // 时刻注意溢出问题
num = 1;
while (n > cnt * num){
n -= cnt * num;
cnt *= 10;
num++;
}
long targetNum = 1;
for (int j = 1; j < num; ++j)
targetNum *= 10;
n--; // 这一步,使得sequence从0 开始,而不是从1开始,便于接下来的计算
targetNum += (n / num);
n %= num;
string str = to_string(targetNum);
return str[n] - '0';
}
};