Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo liebe Gemeinde,
ich bin neu hier und scheitere daran eine Programm zu schreiben welches aus einem Text mir alle Palindrome die Wort übergreifend vorkommen übergibt..
Ein Programm das ein Palindrom erkennt habe ich schon, nur kann das halt den String im gesamten überprüfen.
Ich habe mir mal überlegt dass man eine Methode schreiben könnte, die die alle mögliche stellen die aneinader hängen teste. Gibt es da einen Algorithmus?
Lese den Text einfach Wort für Wort ein und prüfe mit deiner schon vorhandenen Methode.
Man kann auch eine Zeile einer Datei einlesen und dann diese Zeile mithilfe der split() Methode bei jedem Leerzeichen prüfen. Durch split() erhältst du ein Array von Strings, diese kannst du dann durchiterieren und wieder mithilfe deiner Methode analysieren.
Im Ansatz etwa so:
Java:
String[] words = line.split(" ");
for(String word : words) {
checkPalindrom(word);
}
nur dass es eben wohl nicht nur für einzelne Wörter geprüft werden ... dies ist wohl der entscheidende Passus !!
Habe ich allerdings so aus dem Stand auch keine sinnvolle Idee
Gruß Klaus
EDIT: evtl. immer zwei aufeinanderfolgende Wörter konkatenieren und dann prüfen ...
Man muss bei Weitem nicht alle SubStrings durchgehen. Da explodiert schon bei relativ kurzen Texten die Laufzeit. Man muss schon ein bisschen "klug" dabei vorgehen, um wenigstens die mittlere Laufzeit klein zu halten.
Lösungen gibt es verschiedene und die meisten sind auch kein Hexenwerk. In meiner ersten Antwort hab ich aber bewusst keinen Lösungsansatz gepostet .. wir wollen hier doch keine Hausaufgaben für andere lösen, ohne dass auch nur ansatzweise der Versuch gezeigt wird, dass sich mit dem Problem beschäftigt wurde.
Da kommt mir gleich die Frage, wann ist Schluss mit der Suche. Also wann ist die Abbruchbedingung gegeben. Ich könnte bei jedem Text davon ausgehen, dass er ab einer bestimmten Stelle nochmal in gespiegelter Form vorliegt. Also immer erwarten, dass irgendwann schon ein Palindrom kommt.
Wenn ich jetzt "abcdefghijklmnopqrstuvwxyzäüöß123456789" durchgehe kann es ja sein das am Ende dann "987654321ßöüäzyxwvutsrqponmlkjihgfedcba" kommt... oder auch nicht^^
Stichwort hierzu ist dynamische Programmierung. (Natürlich musst du bei deinem Anwendungsszenario noch Leerzeichen/Satzzeichen entfernen und auf Groß/Kleinschreibung achten, aber das ist ja ziemlich einfach.)
Ich habe jetzt mehrere Minuten für diese Aufgabe gebraucht, und auch noch nicht die Tests geschrieben. Also für eine Prüfung würd ich das nicht empfehlen.
Wenn man mal nach "dna extraction machine price" sucht, sieht man, die Hersteller geben den Preis einfach nicht an! Als Privatperson hat man immer nu Probs.^^[/OT]