题目链接: 剑指Offer 43. 1~n 整数中 1 出现的次数
题目描述:
解法思路:
代码:
func countDigitOne(n int) int {
//思路
if n == 0 {
return 0
}
//求出该数的各个位上的数字,保存到nums中
var nums []int
tmp := n
for tmp != 0 {
a := tmp % 10
nums = append(nums, a)
tmp /= 10
}
var l, r, t, res int
for i := len(nums) - 1; i >= 0; i-- {
l = 0 //表示左边
r = 0 //右边
t = 1
for j := len(nums) - 1; j > i; j-- {
l = l*10 + nums[j]
}
for j := i - 1; j >= 0; j-- {
r = r*10 + nums[j]
t *= 10
}
res += l * t
if nums[i] == 1 {
res += r + 1
} else if nums[i] > 1 {
res += t
}
}
return res
}
标签:tmp,10,nums,int,res,Offer,43,整数
From: https://www.cnblogs.com/lxing-go/p/17685415.html