Java I';我坚持这个逻辑程序好几天了。有人能帮我弄清楚吗?

Java I';我坚持这个逻辑程序好几天了。有人能帮我弄清楚吗?,java,logic,Java,Logic,挑战 输入:标准输入 输出:标准输出 时限:3秒 这是另一个星期天晚上在codecity,和往常一样,许多编码挑战正在被宣布。我们的英雄Bob发现其中一个挑战非常有趣,并尝试了一下。挑战是给定两个整数a和B,Bob应该找出[a…B]范围内的数字包含不包含出现两次以上的数字。为Bob编写计算机程序以解决此问题 输入: 第一行包含测试用例T的数量。接下来的每一行包含两个整数,A和B 输出: 输出T行,每个案例一行,包含对应案例的所需答案 限制条件: 1Edit:我还在main中添加了标准IO的读数。

挑战

输入:标准输入 输出:标准输出 时限:3秒 这是另一个星期天晚上在codecity,和往常一样,许多编码挑战正在被宣布。我们的英雄Bob发现其中一个挑战非常有趣,并尝试了一下。挑战是给定两个整数a和B,Bob应该找出[a…B]范围内的数字包含不包含出现两次以上的数字。为Bob编写计算机程序以解决此问题

输入: 第一行包含测试用例T的数量。接下来的每一行包含两个整数,A和B

输出: 输出T行,每个案例一行,包含对应案例的所需答案

限制条件:


1Edit:我还在main中添加了标准IO的读数。解决方案现在应该已经完成了,除了您还可以内置的需求之外。我已经评论过了,所以你知道发生了什么。它可能不是最有效/最优雅的解决方案,因此欢迎改进:

public static int getNumbers(int a, int b){
    //Return if invalid input
    if(b < a){
        return -1;
    }

    int counter = 0;

    //Iterate over all numbers from the range
    for(int i = a; i <= b; ++i){
        boolean validNumber = true;

        //List of digits - we will put how many we have in here
        int[] digits = new int[10];

        //Split the number into digits
        int number = i;
        while(number > 0){
             //Get current digit
             int currentDigit = number % 10;
             //Increment the number of these digits found
             ++digits[currentDigit];
             //If number greater than 4, set flag and break loop
             if(digits[currentDigit] > 2){
                 validNumber = false;
                 break;
             }
             //Divide by 10 to get the next digit
             number = number / 10;
        }
        //Ig the number is valid, increase counter
        if(validNumber == true){
            ++counter;
        }
    }

    return counter;
}
输出:

20
0
331
-1
Please Enter The Number of test cases: 
1
Please Enter A: 
100
Please Enter B: 
120
20

顺便说一句,我不明白这个要求:1…你试过什么?我无法理解逻辑。我试过使用for循环。但我无法理解“包含不包含发生两次以上的数字”这一点!如果他知道数字,为什么答案是20?101似乎是一个有效的数字。或者他应该找出这个范围中有多少个数字?也许你可以粘贴一些代码,这样我们就可以看到你错在哪里了谢谢!)你的代码确实帮助我更好地理解了逻辑。后来我被纠正,约束是10^8,而不是10^4。不管怎样,我编辑了那个部分并完成了。谢谢你的努力:)不客气,@AnkitPanchal。很高兴我能帮忙。顺便说一句:我13岁的时候在Delphi做了我的第一个程序,所以坚持下去,你在正确的轨道上!英雄联盟我希望有一天能像你们一样,在几分钟内解决任何挑战。灵感:)
20
0
331
-1
Please Enter The Number of test cases: 
1
Please Enter A: 
100
Please Enter B: 
120
20