整数1、2、3、4、5、6、7、8、9、10、11、...、第n桁に見出さの無限配列です。
注:
N-及び整形(N <231)の32の範囲の正数です。
例1:
入力:
3
出力:
3
例2:
入力:
11
出力:
0
説明:
最初の11桁...、それは部分10で、シーケンス1 0、2、3、4、5、6、7、8、9、10、11です。
ソリューション:
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)
}