Skip to content

Latest commit

 

History

History
41 lines (32 loc) · 815 Bytes

44.md

File metadata and controls

41 lines (32 loc) · 815 Bytes

数字序列中某一位的数字

题目

数字以 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
}