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开发中,我们经常会遇到各种算法挑战,其中之一就是如何计算一个十进制数N的二进制表示中“1”的个数。这个任务看似简单,但其实涉及到计算机科学的基础知识,包括二进制转换、位操作以及算法设计。下面...
标题中的“算法-数1的个数”是一个典型的计算机科学问题,主要涉及到位操作和计数技巧,常常出现在信息学奥林匹克竞赛中。这类问题要求我们计算一个整数在二进制表示下含有多少个1。这是一道挑战思维、锻炼编程能力...
= n × (n-1) × (n-2) × ... × 3 × 2 × 1`。例如,5的阶乘是`5! = 5 × 4 × 3 × 2 × 1 = 120`。阶乘在组合数学、概率论和计算机科学中都有广泛的应用。 当我们讨论“阶乘位数”时,我们关注的是阶乘数值的...
深入浅出,描述java算法,从0到1。 1.大O表示法:粗略的量度方法即算法的速度是如何与数据项的个数相关的 算法 大O表示法表示的运行时间 线性查找 O(N) 二分查找 O(logN) 无序数组的插入 O(1) 有序数组的...
假设最大元素的位数为 d,待排序元素的个数为 n,基数排序算法的时间复杂度为 O(d(n+k)),其中 k 为桶的个数。在实际应用中,基数排序算法通常用于对大量数据进行排序,例如对大型数据库中的数据进行排序。 基数...
桶排序(Bucket Sort)是一种非比较排序算法,其基本思想是将待排序的数组分到有限数量的桶里,然后对每个桶进行排序,最后依次将所有桶中的元素取出来,组成有序的数组。桶排序的时间复杂度为 O(n),其中 n 为待...
在这个程序中,`for_yuju1`类定义了一个名为`method`的静态方法,该方法接收一个整数`n`作为参数,计算并返回从1开始到第n个奇数(不包括n本身)的和。 首先,我们来看一下`main`方法。`main`方法是每个Java程序的...
- `fn = fn-1 * n` - **程序分析**: - 定义一个递归函数来计算阶乘。 - 基本结束条件为n=1时,返回1。 - 递归调用自身,参数减1,直到达到基本结束条件。 #### 程序19: 年龄问题 - **背景**: 五个人依次年龄...
Java 面试经典算法是指在 Java 面试中经常会被问到的算法题目,这些题目涵盖了数据结构、算法设计、编程语言基础知识等方面的知识。本文总结了 17 道 Java 面试经典算法题目,并对每道题目进行了详细的分析和解释。 ...
标题 "1-n中缺失2个数字,O(n)时间内找出它们" 描述的是一个经典的算法问题,它要求在已排序的数组(从1到n,但缺失了两个数字)中,找出这两个缺失的数字,而目标是在线性时间复杂度O(n)内完成。这个问题在计算机...
Java递归算法是一种编程技术,它允许函数或方法在执行过程中调用自身。递归通常用于解决具有重复子问题的问题,通过将复杂问题分解成更小的子问题来简化处理。这种策略的关键在于存在一个终止条件,即所谓的递归基,...
斐波那契数列的规律为:`F(n) = F(n-1) + F(n-2)`,其中 `F(1) = 1`,`F(2) = 1`。 2. **算法实现**:可以采用循环或递归的方式实现。循环方式更高效,避免了递归中的重复计算。 **示例代码**(循环): ```java ...
在编程领域,计算顺序数列中某一数字出现的个数是一项常见的任务,它涉及到数组处理、计数算法以及条件判断等基础知识。顺序数列通常指的是一个由0开始,按照自然数顺序排列的序列,例如0, 1, 2, 3, ..., n。这个...
斐波那契数列的定义为:F(1)=1, F(2)=1, F(n)=F(n-1)+F(n-2)(n≥3,n∈N*)。根据题目中的条件,可以发现每个月兔子的数量增长符合斐波那契数列的特点。 **代码实现**: ```java public class FirstRabbit { ...
具体来说,内层循环会从2遍历到当前数的平方根,如果存在任何能够整除当前数的数,则当前数不是素数。 **代码实现:** ```java package cn.com.flywater.FiftyAlgorthm; public class SecondPrimeNumber { ...
总的来说,"兰州大学马俊java实验1"可能涉及到的编程知识点包括理解并实现Fibonacci数列的递归或循环逻辑,以及在Java中正确使用`Math`类中的`sin()`函数进行角度到弧度的转换和计算正弦值。这些基本技能对于初学者...
本题解将深入探讨LeetCode上的第4题——“寻找两个正序数组的中位数”,这是一道涉及到数组操作和查找策略的问题,对于理解数据结构和算法有着重要意义。 首先,我们要明确“中位数”的概念。在一组数值中,中位数...
直接插入排序是一种简单的排序方法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。时间复杂度为O(n^2),适合小规模或部分有序的数据。 2. **希尔排序...
- **应用示例**:题目中通过遍历101到200之间的所有奇数(偶数除了2之外都不是素数),并检查它们是否为素数,最后统计素数的个数。 #### 程序3:水仙花数的定义与判断 - **水仙花数定义**:水仙花数(Narcissistic...
### Java算法题指导手册知识点详解 #### 一、赋值运算函数 在Java编程语言中,赋值运算符是用于将一个表达式的值赋给另一个变量。最基本的赋值运算符是`=`。除此之外,Java还支持复合赋值运算符,如`+=`, `-=`, `*...