public class E44findDigitInSequence {
//数字序列中某一位的数字
public static int digitAtIndex(int index){
if (index < 0)
return -1;
int digits = 1;
while(true){
//获取某位数对应的数字总数
int countOfNumber = countOfIntegers(digits);
//小于则找到数字输出结果
if (index < digits * countOfNumber)
return digitAtIndex(index, digits);
//否则继续增加位数
index -= digits * countOfNumber;
digits ++;
}
}
private static int digitAtIndex(int index, int digits) {
int goalNumber = startNumber(digits) + index / digits;
int indexFromRight = digits - index % digits;
for (int i = 1; i < indexFromRight; i ++)
goalNumber /= 10;
return goalNumber % 10;
}
private static int startNumber(int digits) { //位数为digits的最小数字
if (digits == 1)
return 0;
return (int) Math.pow(10, digits -1);
}
private static int countOfIntegers(int digits) { //位数为digits的所有数字数量
if (digits == 1)
return 10;
else
return 9 * (int) Math.pow(10, digits - 1);
}
//测试用例
public static void main(String[] args){
System.out.println(E44findDigitInSequence.digitAtIndex(1001));
}
}
数字序列中某一位的数字(Java实现)
最新推荐文章于 2022-07-06 20:22:07 发布
本文介绍了一个用于查找数字序列中特定位置数字的算法实现。通过计算不同位数的数字总数,定位到目标数字,并精确到该数字的指定位,返回所需数字。文章提供了完整的Java代码示例,包括主函数的测试调用。
543

被折叠的 条评论
为什么被折叠?



