400-Nth Digit

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).

这道题有点意思

    public int findNthDigit(int n) {
        long i = 0;
        int start = 1;
        int len = 1;
        long val = 9; //注意溢出
        
        //找到落在哪个区域
        while(n > ( i = len * val)){
            n -= i; //注意溢出?
            len ++;
            val = val * 10;
            start = start * 10;
        }
        
        //找到对应数字是多少
        int num = start + (n - 1)/len;
        
            //找到对应数字的位数
        String s = Integer.toString(num);
        return Character.getNumericValue(s.charAt((n - 1) % len));
        
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容