leetcode400

135 阅读1分钟
class Solution {
    fun findNthDigit(x: Int): Int {
        var n = 1
        var sum = 0
        while (true) {
            val d: Int = ((9 * 10.toDouble().pow(n - 1)) * n).toInt() //n位数有多少个x类型数字
            if (x > d) {
                println("==$d")
                sum += d
                n += 1
                continue
            } else {
                break
            }
        }
        println("$n 在几位数里")
        println("$sum 总数,上一位数的总和")
        //上一个位数的自然数的总和
        val numSum: Int = (10.toDouble().pow(n - 1) - 1).toInt()
        println("${n - 1} 位数自然数的总和 $numSum")
        val num = (x - sum) / n
        val yu = (x - sum) % n
        println("num== $num  yu== $yu")
        if (yu == 0) {
            val temp = numSum + num  //这个数字的最后一位就是我们想要的结果
            val toCharArray = temp.toString().toCharArray()
            return toCharArray[toCharArray.size - 1].toString().toInt()
        } else {
            val temp = numSum + num + 1  //这个数字的最后一位就是我们想要的结果
            val toCharArray = temp.toString().toCharArray()
            return toCharArray[toCharArray.size - 1 - (n - yu)].toString().toInt()
        }
    }
}