N-палиндромный вопрос, нужно определить второй завершающий случай - PullRequest
0 голосов
/ 17 октября 2019

Этот рекурсивный метод находит палиндром строки на основе значения n. Где n - это количество символов, которые сравниваются в каждый момент времени. Если n равно 2, то «abab» является палиндромом из-за ab и ab.

public static boolean nDrome(String s, int n)
{
      if(s.isEmpty())
         return true;
      else if( s.length() == 3 )
         return true;
      else
      {  
         if(s.substring(0,n).equals( s.substring(s.length()-n) ) )
            return nDrome( s.substring(n, s.length()-n), n);
         else
         return false;
      }
   }

Проблема заключается в моем втором операторе if. Например, рассмотрим:

nDrome("abcdefgcdab", 2);

Это палиндром, потому что AB, CD, EFG, CD, AB

Обратите внимание, что средний член не считается,так что в этом случае код работает, потому что в if есть жестко закодированное значение 3. Теперь, если бы я изменил значение n, он больше не работал бы должным образом. Как я могу определить значение второго оператора if?

...