Bei der LinkedList auf Palindrom überprüfen

canyakan95

Bekanntes Mitglied
hallo ich soll bei der linked list überprüfen ob die zahlen in der liste ein palindrom ist.

habe folgendes gemacht ..bekomme leider immer true zurück.
hoffe ihr könnt mir helfen.
Mfg

Java:
public boolean isPalindrome() {
   Element<T> up = first;
   Element<T> down = last;
   int m = size() / 2;
   for (int i = 0; i < m; i++) {
     up = up.getNext();
     for (int j = this.size - 1; j > m; j--) {
       down = down.getPrevious();
       if (up.getContent().equals(down.getContent())) {
         return true;
       }
     }
   }
   return false;
}
 
Zuletzt bearbeitet von einem Moderator:
Du musst das von der anderen Seite sehen.

Du musst so lange die Liste durchlaufen bis du einen Fehler (also einen Missmatch) findest und kannst dann schnell aus der Methode heraus (auch aus der Schleife) ein false liefern.
Wenn alles klar ist, dann gibt die Methode true zurück.

Was du machen musst ist eben dein if negieren und false zurückgeben und am Ende deiner Methode ein true liefern.
 
Hey ..habe das mal ausprobiert..aber das liefert immer noch ein falsches ergebnis...Fragwürdig..
Hier mein neuer Code:
Java:
       public boolean isPalindrome()
       {
          Element<T> up = first;
          Element<T>down=last;
          int m=size()/2;
          for(int i=0;i<m;i++)
          {
              up=up.getNext();
              for(int j=this.size-1;j>=m;j--)
              {
                  down=down.getPrevious();
                  if(!(up.getContent().equals(down.getContent())))
                  {
                      return false;
                  }
              }
          }
          return true;
       }
 
wie wäre diese lösung, da müsstest du nur noch das Element[] durch deinen zugriff ersetzten
Java:
int lower =0;
int upper =Element.length;
while( lower <= upper){
if( Element[ lower] != Element[ upper]){
   return false;
}
upper--;
lower++;
}
return true;
 
Entschuldige meinen vorherigen Post. Du musst natürlich mehr ändern. Du brauchst keine zwei verschachtelten Schleifen:
Java:
public boolean isPalindrom() {
  Element<T> up = first;
  Element<T> down = last;
  int m = size() >> 1;
  for(int i = 0; i < m; i++) {
    if(!Objects.equals(up.getContent(), down.getContent()) {
      return false;
    }
    up = up.getNext();
    down = down.getPrevious();
  }
  return true;
}
 

Zurück
Oben