Стек палиндрома - PullRequest
       4

Стек палиндрома

0 голосов
/ 12 февраля 2020

Я написал этот метод, чтобы проверить, является ли слово палиндромом, но когда это палиндром, он продолжает возвращать false

publi c логический isPalindrome (String s) {

    int i;
    int n = s.length();
    Stack <Character> stack = new Stack <Character>();

     for (i = 0; i < n/2; i++) 
         stack.push(s.charAt(i));
        if (n%2 == 1)
            i++;


     while(!stack.empty( )) {
         char c = stack.pop( );
         if (c != s.charAt(i));
        return false; 



     }
     return true;



}

1 Ответ

1 голос
/ 12 февраля 2020

Я не уверен, почему вы не используете { } скобки. Постарайтесь выучить правильные Java условности раньше.

if (c != s.charAt(i)); // <- this semicolon is your problem
return false; 

Эквивалентно:

if (c != s.charAt(i)) {
  // Do nothing
}

// Do this no matter what
return false; 

Кроме того, логика c на вашем for-l oop может быть ошибочной по тем же причинам. Удалите точку с запятой и, что еще лучше, практикуйтесь всегда в квадратных скобках:

if (c != s.charAt(i)) {
  return false; 
}

@ jhamon также указывает на то, что вы на самом деле никогда не увеличиваете i, пока l oop:

while(!stack.empty( )) {
  char c = stack.pop( );

  if (c != s.charAt(i)) {
    return false; 
  }

  i++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...