这道题之前在力扣上练习过,大致思路记得,具体程序得自己再编辑一遍。于是,开始寻找规律,位数weishu 区间数字的个数period 以及 每长一位的起点start(1 10 100这种)
weishu=1 start=1 period=9(记得从9 99 999 开始,不要从10 100开始,否则容易绕晕)
while(n>period)
{
n-=period;
weishu++;
start=start*10; //对应 1 10 100
period=9*start*weishu; //对应这一区间的数字个数
}
之后确定数字是哪一个:
res=start+(n-1)/weishu
找到对应的字母:
string str_res=to_string(res);
char ch=str_res[(n-1)%weishu];
return ch-'0';
这里有一个特别要注意的点:long数据类型,因为总是卡在10000000这个测试点,原来一直是int 失败了很多次,搜索了一下发现提示需要使用long数据类型!!!