题目描述:
解法思路:
代码:
func findNthDigit(n int) int {
// 1、确定是几位数( -10-90-900-9000等)
// 2、确定是几位数的第几位数(求第n位数是属于哪一个数的)
// 3、确定是 属于那个数的第几位
digit,digitNum,count := 1,1,9 //digit 表示是几位数;digitNum 表示n位数的数量级(与count相乘得到n位数的数量)
// 1、确定是几位数( -10-90-900-9000等)
for n > count{
n -= count
digit++
digitNum *= 10
count = 9*digit*digitNum
}
// 2、确定是几位数的第几位数(求第n位数是属于哪一个数的)
num := digitNum + (n-1)/digit
// 3、确定第n位是
index := (n-1)%digit
//return getDigit(num, index, digit)
// 或者 (利用z)
return int(strconv.Itoa(num)[index]-'0')
}
//获取整数n的第index位,如871的第0位为8
func getDigit(n, index, digit int) int {
k := digit - index - 1
for k > 0 {
n = n / 10
k--
}
return n % 10
}
标签:count,index,digit,Offer,int,digitNum,几位数
From: https://www.cnblogs.com/lxing-go/p/17685407.html