> 文档中心 > 剑指offer-数据类型的定义出错

剑指offer-数据类型的定义出错

1.

数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。

请写一个函数,求任意第n位对应的数字。

题目链接:力扣

class Solution {    public int findNthDigit(int n) { //找规律题:不断的缩小范围 //根据n先找到该n处于几位数,之后确定哪个数,再确定n位于哪位值 long start =1;//每位的起始值 int digit =1;//数字是几位的,这里定义字符是long,要不计算出错 long count =9;//每位的数字的总量 while(n>count){     n-=count;     start *=10;     digit+=1;     count = 9*digit*start; } long num = (n-1)/digit+start;//找到对应数值 String resnum=num+""; char[] res = resnum.toCharArray(); //n-1对位数求余,就可锁定对应哪位 return res[(n-1)%digit]-'0'; // return Long.toString(num).charAt((n-1) % digit)-'0';    }    }

jcg路由器知识网