233. 数字 1 的个数(困难)
题目描述:
给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。
考察重点:分别计算个、十、百…千位上1出现的次数,再求和。
func countDigitOne(n int) int {num, i, numOne := n, 1, 0for num > 0{if num % 10 == 0 {numOne += (num / 10)* i}if num % 10 == 1 {numOne += (num / 10) * i + (n % i) + 1}if num % 10 > 1 {numOne += int(math.Ceil(float64(num) / 10.0)) * i}num = num / 10i = i * 10}return numOne
}