`

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

    博客分类:
  • java
 
阅读更多
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
分享到:
评论

相关推荐

    (android demo)算法实现:计算十进制数N的二进制形式中包含数字1的个数

    在Android开发中,我们经常会遇到各种算法挑战,其中之一就是如何计算一个十进制数N的二进制表示中“1”的个数。这个任务看似简单,但其实涉及到计算机科学的基础知识,包括二进制转换、位操作以及算法设计。下面...

    算法-数1的个数(信息学奥赛一本通-T1095).rar

    标题中的“算法-数1的个数”是一个典型的计算机科学问题,主要涉及到位操作和计数技巧,常常出现在信息学奥林匹克竞赛中。这类问题要求我们计算一个整数在二进制表示下含有多少个1。这是一道挑战思维、锻炼编程能力...

    n的阶乘问题--阶乘位数--阶乘末尾0的个数

    = n × (n-1) × (n-2) × ... × 3 × 2 × 1`。例如,5的阶乘是`5! = 5 × 4 × 3 × 2 × 1 = 120`。阶乘在组合数学、概率论和计算机科学中都有广泛的应用。 当我们讨论“阶乘位数”时,我们关注的是阶乘数值的...

    Java常用算法手册

    深入浅出,描述java算法,从0到1。 1.大O表示法:粗略的量度方法即算法的速度是如何与数据项的个数相关的 算法 大O表示法表示的运行时间 线性查找 O(N) 二分查找 O(logN) 无序数组的插入 O(1) 有序数组的...

    详解Java常用排序算法-基数排序

    假设最大元素的位数为 d,待排序元素的个数为 n,基数排序算法的时间复杂度为 O(d(n+k)),其中 k 为桶的个数。在实际应用中,基数排序算法通常用于对大量数据进行排序,例如对大型数据库中的数据进行排序。 基数...

    详解Java常用排序算法-桶排序

    桶排序(Bucket Sort)是一种非比较排序算法,其基本思想是将待排序的数组分到有限数量的桶里,然后对每个桶进行排序,最后依次将所有桶中的元素取出来,组成有序的数组。桶排序的时间复杂度为 O(n),其中 n 为待...

    java源代码--求n个奇数的和

    在这个程序中,`for_yuju1`类定义了一个名为`method`的静态方法,该方法接收一个整数`n`作为参数,计算并返回从1开始到第n个奇数(不包括n本身)的和。 首先,我们来看一下`main`方法。`main`方法是每个Java程序的...

    蓝点被必做的算法经典题java.c/c++

    - `fn = fn-1 * n` - **程序分析**: - 定义一个递归函数来计算阶乘。 - 基本结束条件为n=1时,返回1。 - 递归调用自身,参数减1,直到达到基本结束条件。 #### 程序19: 年龄问题 - **背景**: 五个人依次年龄...

    Java面试经典算法

    Java 面试经典算法是指在 Java 面试中经常会被问到的算法题目,这些题目涵盖了数据结构、算法设计、编程语言基础知识等方面的知识。本文总结了 17 道 Java 面试经典算法题目,并对每道题目进行了详细的分析和解释。 ...

    1-n中缺失2个数字,O(n)时间内找出它们

    标题 "1-n中缺失2个数字,O(n)时间内找出它们" 描述的是一个经典的算法问题,它要求在已排序的数组(从1到n,但缺失了两个数字)中,找出这两个缺失的数字,而目标是在线性时间复杂度O(n)内完成。这个问题在计算机...

    java递归算法

    Java递归算法是一种编程技术,它允许函数或方法在执行过程中调用自身。递归通常用于解决具有重复子问题的问题,通过将复杂问题分解成更小的子问题来简化处理。这种策略的关键在于存在一个终止条件,即所谓的递归基,...

    java算法 经典算法

    斐波那契数列的规律为:`F(n) = F(n-1) + F(n-2)`,其中 `F(1) = 1`,`F(2) = 1`。 2. **算法实现**:可以采用循环或递归的方式实现。循环方式更高效,避免了递归中的重复计算。 **示例代码**(循环): ```java ...

    计算顺序数列某一数字出现的个数

    在编程领域,计算顺序数列中某一数字出现的个数是一项常见的任务,它涉及到数组处理、计数算法以及条件判断等基础知识。顺序数列通常指的是一个由0开始,按照自然数顺序排列的序列,例如0, 1, 2, 3, ..., n。这个...

    Java经典问题算法大全-A

    斐波那契数列的定义为:F(1)=1, F(2)=1, F(n)=F(n-1)+F(n-2)(n≥3,n∈N*)。根据题目中的条件,可以发现每个月兔子的数量增长符合斐波那契数列的特点。 **代码实现**: ```java public class FirstRabbit { ...

    Java经典问题算法大全

    具体来说,内层循环会从2遍历到当前数的平方根,如果存在任何能够整除当前数的数,则当前数不是素数。 **代码实现:** ```java package cn.com.flywater.FiftyAlgorthm; public class SecondPrimeNumber { ...

    兰州大学马俊java实验1

    总的来说,"兰州大学马俊java实验1"可能涉及到的编程知识点包括理解并实现Fibonacci数列的递归或循环逻辑,以及在Java中正确使用`Math`类中的`sin()`函数进行角度到弧度的转换和计算正弦值。这些基本技能对于初学者...

    java面试-leetcode面试java编程题解之第4题寻找两个正序数组的中位数-java题解.zip

    本题解将深入探讨LeetCode上的第4题——“寻找两个正序数组的中位数”,这是一道涉及到数组操作和查找策略的问题,对于理解数据结构和算法有着重要意义。 首先,我们要明确“中位数”的概念。在一组数值中,中位数...

    java 8种排序算法

    直接插入排序是一种简单的排序方法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。时间复杂度为O(n^2),适合小规模或部分有序的数据。 2. **希尔排序...

    2016JAVA算法面试编程题全集(50题及答案)

    - **应用示例**:题目中通过遍历101到200之间的所有奇数(偶数除了2之外都不是素数),并检查它们是否为素数,最后统计素数的个数。 #### 程序3:水仙花数的定义与判断 - **水仙花数定义**:水仙花数(Narcissistic...

    java算法题指导手册

    ### Java算法题指导手册知识点详解 #### 一、赋值运算函数 在Java编程语言中,赋值运算符是用于将一个表达式的值赋给另一个变量。最基本的赋值运算符是`=`。除此之外,Java还支持复合赋值运算符,如`+=`, `-=`, `*...

Global site tag (gtag.js) - Google Analytics