首页 > 其他 > 详细

剑指offer:从1到n整数中1出现的次数

时间:2014-04-18 08:39:00      阅读:433      评论:0      收藏:0      [点我收藏+]

题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。

private int iFactor = 1, iLower = 0, iCur = 0, iHigh = 0, iCount = 0;

	public int sum1(int N) {
		while (N / iFactor != 0) {
			iLower = N - (N / iFactor) * iFactor;
			iCur = (N / iFactor) % 10;
			iHigh = N / (10 * iFactor);
			switch (iCur) {
			case 0:
				iCount += iFactor * iHigh;
				break;
			case 1:
				iCount += iFactor * iHigh + iLower + 1;
				break;
			default:
				iCount += (iHigh + 1) * iFactor;
				break;
			}
			iFactor *= 10;
		}
		return iCount;
	}

上面的程序iCur表示当前位的数字,iLower表示iCur的低一位的数字,iHigh表示当前位的高一位的数字,我们计算1在某一位出现的次数,此时这个不仅与当前位有关,而且与当前位的前一位有关。

剑指offer:从1到n整数中1出现的次数,布布扣,bubuko.com

剑指offer:从1到n整数中1出现的次数

原文:http://blog.csdn.net/litianpenghaha/article/details/23937445

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