当前位置: 首页 > 知识库问答 >
问题:

使用位数在给定范围之间查找回文数

缑修齐
2023-03-14

所以我必须写一个程序,找到给定范围之间的所有回文数。程序必须使用numDigits()方法,该方法接受int数并返回该int的位数。

一个isPalindrome()方法,它将接受一个int数字,并返回一个布尔值true或false,无论该数字是否回文

我在这里编码了一个numDigit()方法:

public static int getNumDigits(int numCount, int END) 
{  

   //local variables 
   int numDigits;

     numDigits = 0;

       while(numCount <= END)
       { 
           numDigits = (int)(Math.log10(numCount)+1);

              if(num == 0) 
              { 
                   numDigits = 1;
              }

               numCount++;

       }//end of minor loop

      return numDigits;

}// numDigit Method 

我知道如何用另一种方法找到回文,但作业是专门针对这种技术的。我如何实现这个numDigit()方法来查找一个范围之间给定的所有回文数?

共有1个答案

轩辕佑运
2023-03-14

您需要知道数字的个数,以查找该数字是否为回文,如本算法所示:

>

  • 计算数字中的位数。
  • 如果数字的位数为奇数,则删除中间的数字,使数字的位数为偶数。
  • 通过将其分成两半来检查是否为回文。

    public static boolean isPalindrome(int number) {
    //convert number to string for easy processing
    String num = Integer.toString(number);
    
    // count number of digits in number
    int digitCount = numDigits(number);
    
    // if number has odd number of digit
    if (digitCount % 2 == 1) {
        // remove middle digit
        num = num.substring(0, Math.floorDiv(digitCount, 2)) + num.substring(Math.floorDiv(digitCount, 2) + 1);
        // since you removed a digit, the number of digits is one less
        digitCount = digitCount - 1;
    }
    
    // split number in half
    String half1 = num.substring(0, digitCount / 2);
    String half2 = num.substring(digitCount / 2);
    
    // check if two halves are same
    for (int i = 0, j = half2.length() - 1; i < half1.length() && j >= 0; i++, j--) {
        if(half1.charAt(i)!=half2.charAt(j)){
            return false;
        }
    }
    
    return true;
    }
    

  •  类似资料:
    • 所以我正在尝试编写这个java程序,它将检查并显示0到10000之间的所有回文数字。方法isPalindrome必须接受int数,如果number是回文,则返回一个布尔值true,如果number不是回文,则返回一个false。 这是到目前为止的代码,但当我运行它时,它只打印一行1,我在最后添加的打印是为了调试和检查该方法是否工作,但在这种情况下它不工作。我还将numCount初始化为1,因为当n

    • 因此,我必须编写一个程序,使用numDigits方法找到一个范围内的所有回文数,该方法取一个int数并返回该数的位数,使用isPalindrome方法取一个int数并返回一个布尔值true或false。这是在爪哇。 我有一个numDigits方法编码,工作很好,但我不知道如何获得它的输出,并使用它找到一个范围内的所有回文 null

    • 我无法降低这个问题的复杂性。请给出一些更好的方法。 有没有一个我不知道的数学公式,或者它可以用更好的方法来完成? 我是这样做的:

    • 我有N个数字,让我们说。现在我想找出在给定范围内有多少对数字。(L和R给定)。数字对=两个数字相同。我的方法:

    • 问题内容: 我有一个大文本文件(URL.txt),我希望使用一个 sed 命令执行以下操作: 查找行号19和33之间的文本“ google”并将其替换为“ facebook”。 在终端上显示输出而不更改原始文件。 问题答案: 您可以使用SED的范围选择器: 这将在19(不含)和33(含)之间的行上进行替换 请注意,这只会替换每行的第一次出现,您可以使用-modifier更改此行为:

    • 我有三个变量Min=0.29、Max=6.52和center=2.10。我希望创建一个表,以以下方式将这些数据以表格式分配为100个值: 这里,这个图像可以分成0到50和50到100两部分。 在第一部分中,后续值的x与y的增加在1-10与10-20之间较高,在10-20与20-30之间较高,以此类推。 在第二部分中,随后值的x与y的增加在50-60比60-70之间较低,在60-70比70-80之间