java算法----求从1到N中,某数出现的个数

package com.dazhongdianping.interview;

/**
 *  给定一个十进制数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有"1"的个数。
 *  例如:
 *  N=2,写下1,2。这样只出现了1个"1"
 *  N=12,写下 1,2,3,4,5,6,7,8,9,10,11,12。这样"1"的个数是5
 * @author yangjianzhou
 *
 */
public class CountNumber {

	public static void main(String[] args) {
		CountNumber cn = new CountNumber();
		long l1 = System.currentTimeMillis();
		cn.method1(12, 1);
		long l2 = System.currentTimeMillis();
		cn.method2(12, 1);
		long l3 = System.currentTimeMillis();
		System.out.println("方法一运行所需时间为:"+(l2-l1));
		System.out.println("方法二运行所需时间为:"+(l3-l2));
	}

	public void method1(int n,int num){
		StringBuffer sb = new StringBuffer();

		for(int i=1;i<=n;i++){
			sb.append(i);
		}
		int len1 = sb.toString().length();
		int len2 = sb.toString().replaceAll(""+num, "").length();
		System.out.println("从1到"+n+"中有数字"+num+"的个数为:"+(len1-len2));
	}
	
	public void method2(int n,int num){
		int a ,count =0;
		for(int i=1;i<=n;i++){
			a=i;
			while(a!=0){
				if(a%10==1){
					count ++;
				}
					a = a/10;
			}
		}
		System.out.println("从1到"+n+"中有数字"+num+"的个数为:"+count);
	}
}



运行结果:

从1到12中有数字1的个数为:5
从1到12中有数字1的个数为:5
方法一运行所需时间为:2
方法二运行所需时间为:0

你可能感兴趣的:(java算法)