杭州网站前端建设,找效果图去哪个网站,dw做网站实例,仁寿建设局网站题目
数字以0123456789101112131415...的格式作为一个字符序列#xff0c;在这个序列中第2位#xff08;从下标0开始计算#xff09;是2#xff0c;第10位是1#xff0c;第13位是1#xff0c;以此类题#xff0c;请你输出第n位对应的数字。
数据范围#xff1a;0≤n≤…题目
数字以0123456789101112131415...的格式作为一个字符序列在这个序列中第2位从下标0开始计算是2第10位是1第13位是1以此类题请你输出第n位对应的数字。
数据范围0≤n≤109
示例1
输入0
返回值0
示例2
输入2
返回值2
示例3
输入10
返回值1
示例4
输入13
返回值1 解答
源代码
import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定请勿修改直接返回方法规定的值即可*** param n int整型* return int整型*/public int findNthDigit (int n) {//记录n是几位数int digit 1;//记录当前位数区间的起始数字1,10,100...long start 1;//记录当前区间之前总共有多少位数字long sum 9;//将n定位在某个位数的区间中while (n sum) {n - sum;start * 10;digit;//该区间的总共位数sum 9 * start * digit;}//定位n在哪个数字上String num (start (n - 1) / digit);//定位n在数字的哪一位上int index (n - 1) % digit;return (int)(num.charAt(index)) - (int)(0);}
}
总结
小于10的数字一位数19共9个数字9位小于100的数字两位数1099共90个数字180位小于1000的数字三位数100999共900个数字2700位……
我们可以用这样的方式不断减去减去前面位数较少的数字的那些位锁定第n位所在的区间即第n位是几位数。这个区间的起点值加上剩余部分除以这个区间的位数就可以定位n在哪个数字上再通过n对位数取模可以定位是哪一位。下标从0开始需要对n减1