共计 963 个字符,预计需要花费 3 分钟才能阅读完成。
数字序列中的某一位数字
题目形容
数字以 0123456789101112131415… 的格局序列化到一个字符串中,求这个字符串的第 index 位。
题目链接 : [数字序列中的某一位数字]()
代码
/**
* 题目:数字序列中的某一位数字
* 题目形容
* 数字以 0123456789101112131415... 的格局序列化到一个字符串中,求这个字符串的第 index 位。*/
public class Jz70 {public int getDigitAtIndex(int index) {if (index < 0) {return -1;}
int place = 1; // 1 示意个位,2 示意 十位...
while (true) {int amount = getAmountOfPlace(place);
int totalAmount = amount * place;
if (index < totalAmount) {return getDigitAtIndex(index, place);
}
index -= totalAmount;
place++;
}
}
/**
* place 位数的数字组成的字符串长度
* 10, 90, 900, ...
*/
private int getAmountOfPlace(int place) {if (place == 1) {return 10;}
return (int) Math.pow(10, place - 1) * 9;
}
/**
* place 位数的起始数字
* 0, 10, 100, ...
*/
private int getBeginNumberOfPlace(int place) {if (place == 1) {return 0;}
return (int) Math.pow(10, place - 1);
}
/**
* 在 place 位数组成的字符串中,第 index 个数
*/
private int getDigitAtIndex(int index, int place) {int beginNumber = getBeginNumberOfPlace(place);
int shiftNumber = index / place;
String number = (beginNumber + shiftNumber) + "";
int count = index % place;
return number.charAt(count) - '0';
}
}
【每日寄语】养不教,父之过;教不严,师之惰。
正文完