整數中1出現的次數

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

public class Solution {
    
    public int NumberOf1Between1AndN_Solution(int n) {
        
        if(n == 0)
            return 0;
        int times = 1;
        int sum = 0;
        int num = n;
        while(n / times != 0) {
            
            int bit = num % 10;
            if(bit == 0) {
                
                sum += n / (times * 10) * times;
            }else if(bit > 1) {
                
                sum += (n / (times * 10) + 1) * times;
            }else {
                
                sum += (n / (times * 10))*times + n % times + 1;
            }
            num /= 10;
            times *= 10;
        }
        return sum;
    }
    public static void main(String[] args) {
        
        Solution obj = new Solution();
        obj.NumberOf1Between1AndN_Solution(21345);
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容