首页 > 其他 > 详细

Number of Digit One

时间:2015-11-01 02:06:44      阅读:210      评论:0      收藏:0      [点我收藏+]

Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n.

For example:
Given n = 13,
Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13.

?

public class Solution {
    public int countDigitOne(int n) {
        long res = 0;
        int left = n;
        int right = 0;
        int base = 1;
        while (left > 0) {
        	int cur = left % 10;
        	left = left / 10;
        	right = n % base;
        	if (cur == 1) {
        		res += left * base;
        		res += right + 1;
        	} else if (cur == 0) {
        		res += left * base;
        	} else {
        		res += (left+1) * base;
        	}
        	right = cur * base + right;
        	base = base * 10;
        }
        return (int) res;
    }
}

?

Number of Digit One

原文:http://hcx2013.iteye.com/blog/2253519

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!