gpt4 book ai didi

java - 使用位数查找给定范围之间的回文数

转载 作者:行者123 更新时间:2023-12-01 10:52:16 25 4
gpt4 key购买 nike

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

一个 isPalindrome() 方法,它将接受一个 int 数字,并返回一个 boolean 值 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. 计算数字中的位数。
  2. 如果数字的位数为奇数,则删除中间的数字,形成偶数位数的数字。
  3. 通过将其分成两半来检查它是否是回文。

    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 - 使用位数查找给定范围之间的回文数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33792947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com