数字序列中某一位的数字
题目
数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。
请写一个函数,求任意第n位对应的数字。
样例
输入:n = 3
输出:3
输入:n = 11
输出:0
解题思路
主要的思想就是找规律,先找出不同位数的数字所对应的有多少个不同的数字,然后判断输入的位次n在哪一个位数范围内。
然后找规律判断n所对应的数真实是多少num,找出n对应在num的哪一个下标index中,然后取出num数中索引对应的数字就可以。
Java代码
class Solution {
public int findNthDigit(int n) {
//找规律,需要用长整型及进行存储
long start=1;
long digits=1;
while (n>(9*digits*start)){
n-=9*digits*start;
start*=10;
digits+=1;
}
long num=start+(n-1)/digits;
long index=(n-1)%digits;
String str=Integer.toString((int) num);
return (int)( str.charAt((int) index)-'0');
}
}