本人所碰到的情况分以下三种
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所包含的五的倍数 这个之后有机会说
(单线程问题我的笔记本这么好 能用计算搞定的问题为什么要声明那么多东西呢)