数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。
请写一个函数,求任意第n位对应的数字。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
import java.util.Scanner;
class Solution {
public int findNthDigit(int n) {
int digitNum = 1;
long base = 1;
while (n > (base * 9) * digitNum) {
n -= (base * 9) * digitNum;
base *= 10;
digitNum++;
}
int rank = n % digitNum == 0 ? n / digitNum : n / digitNum + 1;
int num = (int) base + rank - 1;
String numStr = String.valueOf(num);
return (n % digitNum == 0 ? numStr.charAt(numStr.length() - 1) : numStr.charAt(n % digitNum - 1)) - '0';
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
System.out.println(new Solution().findNthDigit(in.nextInt()));
}
}
}