剑指offer-刷题笔记-简单题-JZ44 数字序列中某一位的数字
第一遍没有写出来
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return int整型
*/
int findNthDigit(int n) {
long long start = 1, count = 9;//0~9 10~99 100~999
int digCount = 1;//字符位数
//注意这里0~9 10~99 100~999是字符数组的范围,不是输入n的范围,count计算的就是n的对应范围,
// 0~9 n 0~9
//10~99 n 10~280
//100~999 n 280~
while(n > count)
{
n -= count;
digCount++;
start *= 10;
count = start * digCount * 9;//
}
int num = start + (n - 1) / digCount;//对应字符数组值
string s = to_string(num);
int result = s[(n - 1) % digCount] - '0';
return result;
}
};