LeetCode 233 數字 1 的個數

2021-10-02 07:51:26 字數 1621 閱讀 6879

給定乙個整數 n,計算所有小於等於 n 的非負整數中數字 1 出現的個數。

輸入: 13

輸出: 6

解釋: 數字 1 出現在以下數字中: 1, 10, 11, 12, 13 。

《劍指offer》第43題,解法見書。

從「數字規律」著手,通過具體的例子一步步找出規律。

c++語言版

class

solution

intmysolutionrecursively

(string str)

int firstnum = str[0]

-'0'

;int amountoffirstdigit =0;

// 需指定預設值為 0

if(firstnum ==1)

// 當firstnum == 0時,此時amountoffirstdigit == 0

amountoffirstdigit =

stoi

(str.

substr(1

))+1

;else

if(firstnum >1)

amountoffirstdigit =

(int

)pow(10

, length-1)

;int amountofotherdigit =0;

// 需指定預設值為 0

amountofotherdigit = firstnum *

(length-1)

*(int)

pow(

10, length-2)

;return amountoffirstdigit + amountofotherdigit +

mysolutionrecursively

(str.

substr(1

));}

};

c語言版

class

solution

intmysolutionrecursively

(char

*str)

int firstnum = str[0]

-'0'

;int amountoffirstdigit =0;

if(firstnum ==1)

amountoffirstdigit =

(int

)atoi

(str+1)

+1;else

if(firstnum >1)

amountoffirstdigit =

(int

)pow(10

, length-1)

;int amountofotherdigit =0;

amountofotherdigit = firstnum *

(length-1)

*(int)

pow(

10, length-2)

;return amountoffirstdigit + amountofotherdigit +

mysolutionrecursively

(str+1)

;}};

LeetCode 233 數字1的個數

給定乙個整數 n,計算所有小於等於 n 的非負整數中數字 1 出現的個數。示例 輸入 13輸出 6解釋 數字 1 出現在以下數字中 1,10,11,12,13 假設我們要計算乙個六位數abcdef有多少個1,那麼我們要計算6個位置分別出現了多少次1,最後把6個位置的結果加和就是答案了。假如當前正在計...

LeetCode第233題數字1的個數

給定乙個整數 n,計算所有小於等於 n 的非負整數中數字 1 出現的個數。示例 輸入 13 輸出 6 解釋 數字 1 出現在以下數字中 1,10,11,12,13 0.暴力破解法,依次遍歷每個數中的1的個數,累加起來 演算法題如果是挨個寫到這題的話,這個想法在腦中也就是一閃而過 1.遞迴法 為了方便...

233 數字1的個數

給定乙個整數 n,計算所有小於等於 n 的非負整數中數字 1 出現的個數。示例 輸入 13輸出 6解釋 數字 1 出現在以下數字中 1,10,11,12,13 最開始想到的是暴力,但是暴力應該是過不了的。即是 把每乙個數字的裡1的個數都算出來再加起來就是答案 後來我改進了一下,但是還是超出時間和空間...