4,7幸运数问题

只有4,7两个数字是幸运数,其他数字都不是。例如47,77,44都为幸运数,而41,71都不是幸运数,给定整型数a,b,返回a,b(包括a,b)之间的幸运数。如输入10返回2.

一开始看到这个问题的思路是找出1~10;1~100;1~1000以此类推里面的幸运数,发现幸运数看上去类似二叉树结构,不同位数位于不同的层。因此接下来又想到遍历二叉树找到其个数。思路是可行的,但还有更简单易懂的方法。

1:判断该数字是否为幸运数

static boolean isLuckyNum(int num){
		boolean flag=false;
		int[] split = toIntArray(num);
		for(int j=0;j<split.length;j++){
			if(!(split[j]==4)){
				if(!(split[j]==7)){
					flag=false;
					break;
				}
			}
			flag=true;
		}
		return flag;
	}


 2:循环a~b之间的数,找出其中幸运数并计数

public static int getNums(int a,int b){
		int nums = 0;
		for(int i=a;i<=b;i++){
			if(isLuckyNum(i)){
				nums=nums+1;
			}
		}
		return nums;
	}

虽然方法看起来并没有高大上,但不失为解决问题的好思路。一个问题可能有多种解决方案,不要想到一种就死钻牛角尖了,换换思路,或许解决问题花的时间更短!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值