Best Practice Palindrom in einem Text finden

rspi

Neues Mitglied
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?
 

strußi

Top Contributor
dein text ist ein string, mache daraus für jedes Wort ein String, schmeiß die Satzzeichen raus und dann schau ob es ein Palindrom ist
 

Jardcore

Top Contributor
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);
}
 

VfL_Freak

Top Contributor
aus einem Text mir alle Palindrome die Wort übergreifend vorkommen
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 ...
 

Elenteria

Bekanntes Mitglied
wie wärs denn mit sowas
Java:
for(int substringLength = 1; substringLength < string.length; substringLengh++) {
  for(substringStart = 1; substringStart + substringLength < string.length; substringStart++) {
    String substring = string.subspring(substringStart, substringStart + substringLength);
    removeWhitespaces(substring);
    removePunctationsMarks(substring);
    checkPalindom(substring)
  }
}

Alle möglichen Substrings duchgehen, leerzeichen entfernen, Satzzeichen entfernen und prüfen ob der Substring ein Palindrom ist.
 

stg

Top Contributor
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.
 

Jardcore

Top Contributor
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^^
 
X

Xyz1

Gast
Wie wär's damit:
Java:
package javaapplication;

/**
 *
 */
public class Temp {

    public static void main(String[] args) {
        String s = "Halla, mal ein Testproggo, bararabbelol";
        int idx = 1;
        for (int i = 0; i < s.length(); i++) {
            for (int j = s.length(); i + 1 /* mindestlaenge 2 */ < j; j--) {
                if (isPali(s, i, j)) {
                    System.out.println(idx++ + ": " + s.substring(i, j));
                    i = j;
                }
            }
        }
    }

    private static boolean isPali(String string, int from, int to) {
        to--;
        while (from < to) {
            if (string.charAt(from) != string.charAt(to)) {
                return false;
            }
            from++;
            to--;
        }
        return true;
    }
}

Code:
run:
1: alla
2: oggo
3: bararab
4: lol
BUILD SUCCESSFUL (total time: 0 seconds)

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. :)
 
X

Xyz1

Gast
Keine Wörter in Wörtern... Wenn doch (das hatte ich zunächst):
Java:
package javaapplication;

/**
 *
 */
public class Temp {

    public static void main(String[] args) {
        String s = "Halla, mal ein Testproggo, bararabbelol";
        int idx = 1;
        for (int i = 0; i < s.length(); i++) {
            for (int j = i + 2; j <= s.length(); j++) {
                if (isPali(s, i, j)) {
                    System.out.println(idx++ + ": " + s.substring(i, j));
                }
            }
        }
    }

    private static boolean isPali(String string, int from, int to) {
        to--;
        while (from < to) {
            if (string.charAt(from) != string.charAt(to)) {
                return false;
            }
            from++;
            to--;
        }
        return true;
    }
}

Code:
run:
1: alla
2: ll
3: oggo
4: gg
5: bararab
6: ara
7: arara
8: rar
9: ara
10: bb
11: lol
BUILD SUCCESSFUL (total time: 0 seconds)

Das ist aber wirklich "unschön", man soll ja auch etwas mit den Ergebnissen anfangen sollen. :D
 
X

Xyz1

Gast
Ähnliche Java Themen
  Titel Forum Antworten Datum
R In einem Palindrom 2 Buchstaben vergleichen Java Basics - Anfänger-Themen 16
D Größtes Palindrom Produkt aus zwei dreistelligen Zahlen Java Basics - Anfänger-Themen 60
A Palindrom Java Basics - Anfänger-Themen 3
sserio Größtes Palindrom-Produkt Programm funktioniert nur halb Java Basics - Anfänger-Themen 23
H Palindrom ermitteln Java Basics - Anfänger-Themen 21
N palindrom erkennen Java Basics - Anfänger-Themen 3
H Harshad-Zahl (Nivenzahl) und Palindrom überprüfen Java Basics - Anfänger-Themen 2
L Palindrom in zweidimensionalem Array Java Basics - Anfänger-Themen 16
B Palindrom Test mit Junit Java Basics - Anfänger-Themen 23
T Auf Palindrom überprüfen Java Basics - Anfänger-Themen 10
L In Javakara Palindrom erkennen. Java Basics - Anfänger-Themen 9
P Programm Hilfe Palindrom Java Basics - Anfänger-Themen 6
C Bei der LinkedList auf Palindrom überprüfen Java Basics - Anfänger-Themen 4
Y Rekursiv Palindrom herausfinden Java Basics - Anfänger-Themen 5
C Palindrom im array Java Basics - Anfänger-Themen 5
R Palindrom eines int-Arrays berechnen Java Basics - Anfänger-Themen 14
D Palindrom Java Basics - Anfänger-Themen 15
H Palindrom Programm Java Basics - Anfänger-Themen 8
K Palindrom Test Java Basics - Anfänger-Themen 9
C Überprüfen auf Palindrom Java Basics - Anfänger-Themen 12
P Palindrom Java Basics - Anfänger-Themen 10
H Palindrom Java Basics - Anfänger-Themen 7
NoXiD Auf Palindrom Prüfen Java Basics - Anfänger-Themen 9
M Palindrom mit Groß & kleinbuchstaben Java Basics - Anfänger-Themen 19
M Palindrom Test mit Char-arrays! Java Basics - Anfänger-Themen 3
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 23
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
F 2x 16bit Werte zu einem 32bit und dann splitten mit 0xb Java Basics - Anfänger-Themen 1
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
F Einem GIT repository ein Projekt hinzufügen Java Basics - Anfänger-Themen 1
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
J Auf einem JLabel Linien Malen Java Basics - Anfänger-Themen 1
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
Kumora ArrayIndexOutOfBoundsException bei einem Sortierverfahren Java Basics - Anfänger-Themen 2
I Viereck / Rechteck Prüfung innerhalb einem bestimmten Bereich Java Basics - Anfänger-Themen 2
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
Substring in einem String finden Java Basics - Anfänger-Themen 13
J Fehlerbehandlung an einem Beispiel Java Basics - Anfänger-Themen 8
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
I Innerhalb einem Bild ein Teil austauschen Java Basics - Anfänger-Themen 26
I Dateigröße von einem InputStream oder byte[] bekommen Java Basics - Anfänger-Themen 2
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
B In einem Thread Endlosschleife beenden Java Basics - Anfänger-Themen 19
A Elemente in einem Array Java Basics - Anfänger-Themen 5
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
M Objekt in einem Objekt speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
L Gridmuster in einem Array Java Basics - Anfänger-Themen 2
D spezifische Knoten in einem Baum zählen Java Basics - Anfänger-Themen 9
X Erste Schritte Hilfe bei einem kleinen Spiel. Java Basics - Anfänger-Themen 19
O Array mit einem Zeichen vergleichen Java Basics - Anfänger-Themen 1
B Brauche Hilfe zu einem Code Java Basics - Anfänger-Themen 5
J Zahlen bis zu einem bestimmten Grenzwert ausgeben Java Basics - Anfänger-Themen 11
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
Igig1 Wie lasse ich dir Werte in einem Array zusammenrücken? Java Basics - Anfänger-Themen 4
W Methode, die mit einem Datum arbeitet? Java Basics - Anfänger-Themen 22
Igig1 Welche Werte sind als default Werte in einem Array, der als Datentyp eine Klasse hat? Java Basics - Anfänger-Themen 1
Kiki01 Wie würde eine geeignete Schleife aussehen, die die relative Häufigkeit für jeden Charakter in einem Text bestimmt? Java Basics - Anfänger-Themen 3
C Hilfe bei einem Anfängerprojekt Java Basics - Anfänger-Themen 25
U Char zu einem String machen Java Basics - Anfänger-Themen 1
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
S Längster Pfad zwischen zwei Vertices in einem Graph Java Basics - Anfänger-Themen 3
I Upload File zu einem Webservice Java Basics - Anfänger-Themen 17
Naxon89 Input/Output Ein PDF in einem BLOB umwandeln um ihn dann als PDF wieder anzuzeigen Java Basics - Anfänger-Themen 3
Kotelettklopfer Mehrere Projekte in einem Git verwalten Java Basics - Anfänger-Themen 10
B in einem Array den nächstgelegenen Wert zu einem eingabewert finden Java Basics - Anfänger-Themen 8
E JPanels auf gleicher Höhe (Y-Achse) in einem FlowLayout platzieren Java Basics - Anfänger-Themen 7
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
C Programm das feststellen kann, ob eine eingegebene Zahl einem Schaltjahr entspricht, richtig geschrieben? Java Basics - Anfänger-Themen 11
M Von einem Menü Methode aus anderer Klasse ausführen, die errechnete Werte in Datei schreibt. Java Basics - Anfänger-Themen 8
A Zu einem bestimmten Ort im Code springen Java Basics - Anfänger-Themen 11
I Validation, ob String ein Wert aus einem Enum enthält Java Basics - Anfänger-Themen 3
B Häufigkeit einzelner Zahlen in einem Array Java Basics - Anfänger-Themen 6
D Zufällige Auswahl aus einem angelegten Array? Java Basics - Anfänger-Themen 10
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
T Methode schreiben, die einem Array ein Stringelement hinzufügt, wenn dieses noch nicht enthalten ist. Java Basics - Anfänger-Themen 6
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
R Mehrere Buchstaben aus einem String entfernen Java Basics - Anfänger-Themen 1
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
J Alle Dateien aus einem Verzeichnis laden Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben