算法每日一題 - 整數中1出現的次數(從1到n整數中1出現的次數)

題目描述

原題

求出1 ~ 13的整數中1出現的次數,并算出100 ~ 1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對于后面問題他就沒轍了。ACMer希望你們幫幫他,并把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數。

解題思路

  • 暴力循環計數
  • 數學規律

代碼實現

public int findOne(int n) {
    int count = 0;
    for (int i = 0; i <= n; i++) {
        int temp = i;
        // 如果temp的任意位為1則count++
        while (temp != 0) {
            if (temp % 10 == 1) {
                count++;
            }
            temp /= 10;
        }
    }
    return count;
}

參考資料

劍指offer-整數中1出現的次數(從1到n整數中1出現的次數)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。