题解 | #数字序列中某一位的数字#

数字序列中某一位的数字

https://www.nowcoder.com/practice/29311ff7404d44e0b07077f4201418f5

import java.util.*;


public class Solution {
    /**
     * 解题思路:找一下规律
        一位数,1-9,共9个数字,9位数字
        两位数,10-99,共90个数字,180位数字
        两位数,100-999,共900个数字,2700位数字
     *  先锁定第n位的区间,在锁定这个区间的哪位数字
     * 
     * @param n int整型 
     * @return int整型
     */
    public int findNthDigit (int n) {
        //记录n是几位数
        int digit = 1;

        // 记录当前区间的起始数字1 10 100 1000 ...
        long start =1;

        // 记录当前区间总共有多少位数字 
        long sum =9;

        //1. 将n定位在某个区间内
        while(n>sum){
            n-=sum;
            start*=10;
            digit++;
            //区间的总共位数
            sum = 9* start*digit;
        }

        // 2. 定位n在哪个数字上
        String num = "" + (start +(n-1) / digit);

        // 3. 定位n在数字的哪一位上
        int index = (n-1) % digit;


        return num.charAt(index) - '0';
    }
}

全部评论

相关推荐

06-12 17:07
沈阳大学 Java
AAA射频张总:冬天也发扬下,我怕冷
点赞 评论 收藏
分享
05-20 21:57
已编辑
门头沟学院 Java
喜欢吃卤蛋的悲伤蛙在提需求:建信融通没消息吧,我2说有实习挂简历不理了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务