1. 程式人生 > >233.數字1的個數

233.數字1的個數

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

示例:

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

class Solution { public:     int countDigitOne(int n) {         int res = 0, a = 1, b = 1;         while (n > 0) {             res += (n + 8) / 10 * a + (n % 10 == 1) * b;             b += n % 10 * a;             a *= 10;             n /= 10;         }         return res;     } };