검지 Offer 43. 1 ~ n 정수 중 1 이 나타 나 는 횟수 (수학)

Description
정수 n 을 입력 하여 1 ~ n 개의 정수 10 진법 에서 1 이 나타 나 는 횟수 를 구하 십시오.
예 를 들 어 12, 1 ~ 12 를 입력 하면 이 정수 에 1 이 포 함 된 숫자 는 1, 10, 11, 12 이 고 1 은 모두 5 번 나 타 났 다.
   1:

  :n = 12
  :5
   2:

  :n = 13
  :6

  :  (LeetCode)
  :https://leetcode-cn.com/problems/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof
          。           ,          。

Solution
문제 풀이 에 따라 수 동 으로 3 차원 숫자 로 시 뮬 레이 션 해 보면 알 수 있다.
class Solution:
    def countDigitOne(self, n: int) -> int:
        lens=len(str(n))
        count=0
        for i in range(lens):
            digit=10**i #        (    ,   ,      )
            high=n//(digit*10) #        
            low=n%digit #        
            cur=(n//digit)%10 #       
            if cur==0: #    0
                count+=high*digit
            elif cur==1: #    1
                count+=high*digit+low+1
            else: #     1
                count+=(high+1)*digit
        return count

  :blaoke
  :https://leetcode-cn.com/problems/number-of-digit-one/solution/python-tong-su-yi-dong-jie-fa-by-blaoke/
  :  (LeetCode)
        。             ,          。

좋은 웹페이지 즐겨찾기