2015-11-19 4 views
0

поэтому мне нужно написать программу, которая найдет все числа палиндрома между заданным диапазоном. Программа должна использовать метод numDigits(), который принимает номер int и возвращает количество цифр этого int. методПоиск числа палиндрома между заданным диапазоном с использованием числа цифр

isPalindrome(), который будет принимать Int число и возвращает логическое значение истина или ложь, является ли число палиндром или не

У меня есть метод 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() в поиске всех чисел палиндрома, заданных между диапазоном?

+0

Как пишет текущую реализацию 'getNumDigits' не будет компилироваться. Я бы посоветовал начать там. После его запуска вы можете найти его полезным при реализации isPalindrome() – Greg

+0

Как я могу использовать этот метод сейчас, чтобы найти все числа палиндрома между диапазоном –

+0

Я знаю, что мне нужно как-то петлить его –

ответ

1

Вы должны знать количество цифр, чтобы найти, если число палиндром, как показано в этом алгоритме:

  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; 
    } 
    
+0

, если изоляционная часть, которая мне трудна out –

+0

Что вы подразумеваете под изолирующей частью? – AJC

Смежные вопросы