数字以 0123456789101112131415... 的格式作为一个字符序列,在这个序列中第 2 位(从下标 0 开始计算)是 2 ,第 10 位是 1 ,第 13 位是 1 ,以此类题,请你输出第 n 位对应的数字。
- 首先确定该数字是属于几位数的
- 确定该数字是哪个数
- 确定是该数中哪一位
package main
import (
"fmt"
"strconv"
)
// 数字序列中某一位的数字
func main() {
res := findNthDigit(10)
fmt.Println(res)
}
func findNthDigit(n int) int {
start, digit, count := 1, 1, 9
for n > count {
n -= count
start *= 10
digit += 1
count = start * digit * 9
}
num := start + (n-1)/digit
res, _ := strconv.Atoi(string(strconv.Itoa(num)[(n-1)%digit]))
return res
}