LeetCode in Kotlin

400. Nth Digit

Medium

Given an integer n, return the nth digit of the infinite integer sequence [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...].

Example 1:

Input: n = 3

Output: 3

Example 2:

Input: n = 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.

Constraints:

Solution

@Suppress("NAME_SHADOWING")
class Solution {
    /*
     * 1. find the length of the number where the nth digit is from
     * 2. find the actual number where the nth digit is from
     * 3. find the nth digit and return
     */
    fun findNthDigit(n: Int): Int {
        var n = n
        var len = 1
        var count: Long = 9
        var start = 1
        while (n > len * count) {
            n -= (len * count).toInt()
            len += 1
            count *= 10
            start *= 10
        }
        start += (n - 1) / len
        val s = Integer.toString(start)
        return Character.getNumericValue(s[(n - 1) % len])
    }
}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy