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