/*
题目:给一个数n ,
如:219 --> (1) 2 - 1 = 1,|1-9| = 8, |1-8| = 7,219为幸运数
思路:把数字变成字符数组,遍历字符数组直到只剩下一个元素—>组成新的字符数组—>…–>直到新的字符数组长度为1。–>递归
*/
package Offer;
import java.util.*;
/*
题目:给一个数n ,
如:219 --> (1) 2 - 1 = 1,|1-9| = 8, |1-8| = 7,219为幸运数
思路:把数字变成字符数组,遍历字符数组直到只剩下一个元素--->组成新的字符数组--->......-->直到新的字符数组长度为1。-->递归
*/
public class AliQ2 {
public static int isLuckyNumber(int n){
if(n == 7){
return 1;
}
if(n < 10 && n != 7){
return 0;
}
String str = n + "";
return solution(str);
}
//遍历字符串
public static int solution(String str){
int i = 0;
int j = 1;//当j指向字符串的末尾时,本次遍历结束
String tmp = "";
while (j < str.length() ){
int num1 = Integer.parseInt(str.substring(i,j));
int num2 = Integer.parseInt(str.substring(j,j+1));
int res = Math.abs(num1 - num2);
tmp += res;//将结果存放到中间字符串
i++;
j++;
}
//当中间字符串的长度为 1 时,表示运算完毕,检查是否为 7
if(tmp.length() == 1) {
int lucky = Integer.parseInt(tmp);
if (lucky == 7) {
return 1;
}else {
return 0;
}
}
//否则,继续遍历
return solution(tmp);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int l = 0;
int r = 0;
int count = 0;
int T = sc.nextInt();
while (T > 0){
l = sc.nextInt();
r = sc.nextInt();
for(int i = l; i <= r; i++){
count += isLuckyNumber(i);
}
System.out.println(count);
count = 0;
T--;
}
//int t = isLuckyNumber(19);
// System.out.println(t);
}
}