劍指Offer學習-面試題44:數字序列中某一位的數字

	/**
     * 數字序列中某一位的數字
     *
     * @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));
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章