从0-n 中文本内容 含有1的 数字的个数

本人所碰到的情况分以下三种

1 通常思路 for    字符串 比对计数


2 位数计算 另外有其他的朋友取高低位在此不做赘述 拿别人链接不太好CSDN这类帖子不少可以找一找

3取余

public class MainTest {
//0-n 中 文本内容含有 1 的数字的个数
	
	static int count=0;
	public static void main(String[] args) {
		int n=10000;
		for(int i=0;i<=n;i++)
			get(i);
		System.out.println(count);
	}
	public static void get(int n)
	{
		if(n%10==1||(n/10)%10==1)
			 count++;
		else if(n>10)
			get(n/10);
	}
	
	
}

取得数字N 取余判断是否为1 计算次数最坏等于位数 最佳等于1

假设N个随机数最坏N*位数 最佳是N 递归的话可以流畅应对高位数 

就算是循环的话也需要记录大量的变量来反复取位验证 跟递归消耗的资源彼此彼此

代码整洁度和资源回收的优先考虑递归取余可能是比较好的选择


说到这想起个别的问题 从0到N所包含的五的倍数 这个之后有机会说

(单线程问题我的笔记本这么好 能用计算搞定的问题为什么要声明那么多东西呢)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值