swift 算法 简单68.第N个数字

在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字。

注意:
n 是正数且在32为整形范围内 ( n < 231)。

示例 1:

输入:
3

输出:
3
示例 2:

输入:
11

输出:
0

说明:
第11个数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是0,它是10的一部分。

解法:
 

func findNthDigit(_ n: Int) -> Int {
        var n = n
        var carry = 1
        var bits = 1
        while n > carry * bits * 9 {
            n -= carry * 9 * bits
            carry += 1
            bits *= 10
        }
        
        let num = (n - 1)/carry + bits
        let mol = ((carry - n % carry) % carry) + 1
        
        var dev = 1
        
        for _ in 0..<mol-1 {
            dev *= 10
        }
        
        return ((num % (dev * 10)) / dev)
        

    }

猜你喜欢

转载自blog.csdn.net/huanglinxiao/article/details/93159785