/**
* 數字序列中某一位的數字
*
* @param index
* @return
*/
public int digitAtIndex(int index) {
if (index < 0) return -1;
int digits = 1;
while (true) {
int numbers = countOfIntegers(digits);
if (numbers * digits > index) {
int start = digits == 1 ? 0 : (int) (Math.pow(10, digits - 1));
int cur = start + index / digits;
int i = digits - index % digits;
for (int j = 1; j < i; j++) {
cur /= 10;
}
return cur % 10;
}
index -= numbers * digits;
digits++;
}
}
/**
* 輸入一個數字,得到該n位的數字一共有多少個
*
* @param n
* @return
*/
private int countOfIntegers(int n) {
return n == 1 ? 10 : (int) (9 * Math.pow(10, n - 1));
}
劍指Offer學習-面試題44:數字序列中某一位的數字
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.