From d4a1e82a270ac2ca3f1b063dafe26372851b04be Mon Sep 17 00:00:00 2001 From: xuelangZF Date: Thu, 28 Apr 2016 14:01:21 +0800 Subject: [PATCH] update 233 --- Math/233_NumberOfDigitOne.cpp | 37 +++++++++++++++++++++++++++++++++++ Math/233_NumberOfDigitOne.py | 2 +- 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 Math/233_NumberOfDigitOne.cpp diff --git a/Math/233_NumberOfDigitOne.cpp b/Math/233_NumberOfDigitOne.cpp new file mode 100644 index 0000000..5398f1d --- /dev/null +++ b/Math/233_NumberOfDigitOne.cpp @@ -0,0 +1,37 @@ +/* + * @Author: xuezaigds@gmail.com + * @Last Modified time: 2016-04-28 13:58:30 + */ + +class Solution { +public: + int countDigitOne(int n) + { + if(n<=0) return 0; + long long count = 1; + while(n){ + if(n<10){ + break; + } + int digit = n % 10; + n /= 10; + count += n; + if(digit == 0) count -= 1; + count += countDigitOne(n-1) * 10; + + // 最后一行中数组1出现的次数 + while(n){ + if(n%10==1) count += digit+1; + n /= 10; + } + } + return count; + } +}; + +/* +-1 +6 +12 +234545 +*/ diff --git a/Math/233_NumberOfDigitOne.py b/Math/233_NumberOfDigitOne.py index f2baf8e..209ba19 100644 --- a/Math/233_NumberOfDigitOne.py +++ b/Math/233_NumberOfDigitOne.py @@ -13,7 +13,7 @@ def countDigitOne(self, n): else: units = n % 10 tens = n / 10 - count = self.countDigitOne(tens-1) * 10 + tens + count = self.countDigitOne(tens - 1) * 10 + tens n /= 10 while n: if n % 10 == 1: