码迷,mamicode.com
首页 > 其他好文 > 详细

400. Nth Digit

时间:2016-12-04 14:22:32      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:with   ati   log   not   eric   signed   code   nbsp   while   

Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...

Note:
n is positive and will fit within the range of a 32-bit signed integer (n < 231).

Example 1:

Input:
3

Output:
3

 

Example 2:

Input:
11

Output:
0

Explanation:
The 11th digit of the sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... is a 0, which is part of the number 10.

 

 

Hide Company Tags

 

 

 

/**
 * 1 - 9  : 9
 * 10 - 99 : 90
 * 100-999 : 900
 * ...
 */
public class Solution {
    public int findNthDigit(int n) {
        long count = 9;  // 因为要 9 * 1000000000 注意会超出最大整数 !!!!
        int len = 1;
        int start = 1;
        while(n > count * len){
            n -= count * len;
            count *= 10;
            len += 1;
            start *= 10;
        }
        start += (n -1) / len;
        String c = Integer.toString(start);
        return Character.getNumericValue(c.charAt((n-1) % len));
    }
}

 

400. Nth Digit

标签:with   ati   log   not   eric   signed   code   nbsp   while   

原文地址:http://www.cnblogs.com/joannacode/p/6130567.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!