Нахождение числа палиндрома между заданным диапазоном, используя количество цифр
Поэтому я должен написать программу, которая найдет все числа палиндрома между заданным диапазоном. Программа должна использовать метод 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 ответ
Вам нужно знать количество цифр, чтобы узнать, является ли число палиндромом, как показано в этом алгоритме:
- Подсчитайте количество цифр в номере.
- Если число имеет нечетное число цифр, удалите среднюю цифру, сделав число четным числом.
Проверьте, если это палиндром, разделив его пополам.
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; }