您的位置:首页 > 其它

233. Number of Digit One【H】【33】【再来一遍】

2016-05-21 16:46 393 查看
Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n.

For example:

Given n = 13,

Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13.
Show Hint

Subscribe to see which companies asked this question

按位算,先算个位数的1 有多少个,再算十位数的,依次往上

写了好多遍啊。。。。

class Solution(object):
def countDigitOne(self, n):
if n < 1:
return 0

b = 0
t = 1
res = 0

while t <= n:
b = n / (t*10)

tres = b * t

temp = (n / t)%10
if temp == 10:
temp = 1

if temp == 1:
tres += n % t + 1

elif temp > 1:
tres += t

res += tres

#print t,b,tres

t *= 10

return  int(res)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: