gemeinsammen teilstring auslesen

darkeye2

Bekanntes Mitglied
Hallo,

ich versuche gerade aus zwei Strings den gleiche Stringteil zu extrahieren:
Bsp.:
String s1 = "Das ist ein Test String";
String s2 = "Und hier noch ein Test";
gs(s1, s2) wäre dann "ein Test";

Die einzigste Möglichkeit, die mir grad einfällt ist das ganze immer buchstabe für buchstabe durchgehen und testen, sprich:
Java:
String gemeinsamm;
 for(int i = 0; i<s1.length; i++){
    for(int j = i; j<s1.length; i++){
       if(s2.contains(s1.substring(i, j)){
           if(gemeinsamm.length<(j-i)){
              gemeinsamm = s1.substring(i, j);
           }else{
              break;
           }
       }
    }
 }

(hab das grad ohne editor geschrieben, also ohne highlighting, also könnten rechtschreibfehler oder fehlende klammern drin sein, aber der gedanke sollte verständlich sein)

Meine Frage nun, gibt es eine Möglichkeit, das ganze schneller, bzw effektiever zu machen?
 

darkeye2

Bekanntes Mitglied
Danke für den Link, wusste nicht genau, wie ich danach suchen soll.

Aber da die ganzen algorithmen das genau so machen, wie mein erster gedanke ja auch war, scheint es wohl die "beste" variante zu sein, auch wenn es eigendlich von der durchlaufzeit her net so toll ist (muss das recht oft machen, da fällt es auf, auch wenn die Strings immer kurz sind).
 

XHelp

Top Contributor
Naja, das mit den Bäumen sieht vielversprechender aus. Die Frage ist, wie oft und an welchen Daten du es machst und ob es sich überhaupt lohnt da Mühe in Optimierung reinzustecken.
 

darkeye2

Bekanntes Mitglied
also ich denke schon, dass es sinn machen würde, werde es erstmal so testen, und dann weiter schauen.

Die Strings die da geprüft werden sind alle recht kurz (ca. 50 - 120 zeichen) also halt nicht mehr als ein normaler satz, keine ganzen texte oder so. Allerdings wird diese methode sehr oft (viele tausend mal) benötigt, und da noch einige mehr oder weniger anspruchsvolle algorithmen ablaufen, ist es schon sinnvoll, wenn ich versuche alles maximal zu optimieren, schließlich soll die zeit, die das prog für einen durchlauf braucht so kurz wie möglich sein.

Werde das morgen mal so testen, und bescheidgeben, ob es nötig ist, da noch was zu tun.
 

darkeye2

Bekanntes Mitglied
also parallelisiert ist es schon so gut, es eben geht. Eine verbesserung des ganzen ist im moment auch scheinbar nicht nötig, da es auch so ganz passabel läuft, leider hab ich jetzt ein anderes "kleines" Problem, wollte jetzt keinen neuen Thread deswegen aufmachen:
Ich bin auch die nutzung von BigDecimal angewiesen (wenn ich keine eigene klasse schreiben will^^), und ich rechne viel damit rum, leider kriege ich es nicht hin, die länge der gespeicherten nachkommastellen zu regulieren, gibt es da eine einfache möglichkeit?
 

XHelp

Top Contributor
a) sollte schon eine Frage ein Thread sein, zumal zweite Frage eine völlig andere ist
b) Über die Forumsuche würdest du bestimmt schnell eine Antwort finden
c)
Java:
BigDecimal big = new BigDecimal(1.23743176);
big = big.setScale( 2, BigDecimal.ROUND_HALF_UP );
rundet dir das ganze auf 2 Nachkommastellen.
 
E

emailundlos

Gast
dynamischen programmierung ist schon eins der komplexesten gebieten der programmierung. aber das hat das finden von teilstrings in strings denn jetzt mit BigDecimal zu tun? geht es hier immer nur um strings?
 

darkeye2

Bekanntes Mitglied
das hatte ich schonmal, aber scheinbar ist noch ein fehler drin, weil die ausgabe auf diese weise immer so aussieht: 0E-12, davor ohne das setScale war es einfach eine ewig lange zahl, die zwar (zumindest in den esten paar stellen) gestimmt hat, aber viel zu lang war.
Java:
BigDecimal curApprox = new BigDecimal("4");
BigInteger curPrime = new BigInteger("1");
//...  paar methoden und viel code

//methode, wo mit den zahlen gerechnet wird:
curApprox = curApprox.multiply((new BigDecimal(curPrime).divide(new BigDecimal(curPrime.add(BigInteger.ONE)).
                  RoundingMode.DOWN))).setScale(30, RoundingMode.DOWN);


@emailundlos also es ist alles in einem Programm untergebracht^^ aber ansonsten hat das nix mit einander zu tun, wollte eigendlich nur drauf verzichten, noch einen thread auf zu machen. Das mit dem Strings ist zwar definitief keine all zu schöne lösung, aber sie ist von der recheinzeit her vertretbar, da die anderen sachen, die da noch berechnet werden wesendlich länger brauchen. Die berechnung mit den BigDecimal läuft in einem eigenen Thread und sollte auch in einer vertretbaren zeit fertig werden, weil das Ergebniss relevant für die endgültige Ausgabe des Programms ist
 
Zuletzt bearbeitet:
E

emailundlos

Gast
@emailundlos also es ist alles in einem Programm untergebracht^^ aber ansonsten hat das nix mit einander zu tun, wollte eigendlich nur drauf verzichten, noch einen thread auf zu machen.

hier ist das problem, das widerspricht den gängigen forumrichtlinien (ja, sowas gibts)

das mit BigDecimal ist nicht lesbar und du solltest einen eigenen thread deswegen aufmachen.

wenn der aufwand vertretbar ist, da nicht alle anderen teile des programms wesentlich schneller sind und das auch nicht sein müssen, dann würde ich alles genauso machen.
 
E

emailundlos

Gast
wie sind denn die "aufwände" der beiden methoden (der der hierigen und der der auf wikipedia angegebenen) im vergleich?
 

darkeye2

Bekanntes Mitglied
so, hab jetzt fürs andere einen neuen Thread.

Der aufwand von dem Tree auf wikipedia ist von der zeit her etwas kürzer als die andere methode, aber vom speicherverbrauch her ist sie wesendlich intensiever, und da es dann doch nicht so viel bringt, nutze ich jetzt die for-schleifen methode.
Ich hab aber ansonsten auch keine bessere möglichkeit im Netz gefunden, ich glaube, damit muss man sich zufrieden geben.
 
E

emailundlos

Gast
Ab Zeile 4 würde ich doch, wenn contains nicht zutrifft, j sofort auf 0 (bzw. i, bzw. i+1) setzen sowie i inkrementieren (sprich, ich würde die Ausführung der inneren Schleife überspringen). Und dann vom Aufwand her etwa Omega(0.99n) und O(n^2) schätzen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Teilstring durch Teilstring mittels StringBuilder ersetzen Java Basics - Anfänger-Themen 7
P Teilstring suchen Java Basics - Anfänger-Themen 3
MiMa Teilstring aus einem Text entnehmen Java Basics - Anfänger-Themen 7
V Teilstring extrahieren Java Basics - Anfänger-Themen 9
J Zeichen hinter Teilstring aus *txt lesen Java Basics - Anfänger-Themen 7
F class teilstring auslesen. Java Basics - Anfänger-Themen 3
B Suchen nach Teilstring, um Text danach ausgeben Java Basics - Anfänger-Themen 11
G java Texteditor . nur teilstring kursiv . aber wie? Java Basics - Anfänger-Themen 4
kulturfenster Teilstring erkennen Java Basics - Anfänger-Themen 5
T Teilstring aus einer Datei extrahieren und ausgeben Java Basics - Anfänger-Themen 5
G aufsteigenden Teilstring aus String filtern? Java Basics - Anfänger-Themen 2
G ListCellRenderer - TeilString farbig markieren Java Basics - Anfänger-Themen 3
G Teilstring auslesen Java Basics - Anfänger-Themen 6
A Teilstring aus ArrayList ? Java Basics - Anfänger-Themen 5
M Teilstring aus HTML-Tag Java Basics - Anfänger-Themen 3
L Innerhalb eines Strings nach einem Teilstring suchen Java Basics - Anfänger-Themen 2
bernd Teilstring durch ein GIF ersetzen Java Basics - Anfänger-Themen 14
M ein String - ein Teilstring von einem anderen String? Java Basics - Anfänger-Themen 3
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
T array auslesen Java Basics - Anfänger-Themen 2
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
D Eclipse will nicht auslesen Java Basics - Anfänger-Themen 6
E TIF Datei auslesen Java Basics - Anfänger-Themen 2
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
U Sekunden von LocalTime auslesen, wie möglich? Java Basics - Anfänger-Themen 1
E Outlook ordner auslesen Java Basics - Anfänger-Themen 4
R Eigenschaft über Parameter auslesen und ändern Java Basics - Anfänger-Themen 15
B Bin komplett am verzweifeln :( Verkettete Liste die Objekte hat Attribut auslesen Java Basics - Anfänger-Themen 14
J Datei aus Netzwerk auslesen Java Basics - Anfänger-Themen 9
J Jsonfile auslesen Java Basics - Anfänger-Themen 8
A Eine Textdatei auslesen Java Basics - Anfänger-Themen 16
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
H Array rückwärts auslesen funktioniert nicht Java Basics - Anfänger-Themen 3
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
AleXusher Mehrdimensionales Array aus txt.file auslesen Java Basics - Anfänger-Themen 4
L Zeichen an bestimmter Stelle auslesen Java Basics - Anfänger-Themen 4
3 Textdatei Zeilenweise auslesen Java Basics - Anfänger-Themen 3
J Json Datei auslesen Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
S Tastatureingabe auslesen und in Konsole ausgeben Java Basics - Anfänger-Themen 6
S CSV Datei auslesen und anders darstellen Java Basics - Anfänger-Themen 2
G Scanner nutzen und Index auslesen Java Basics - Anfänger-Themen 8
N JTable auslesen Java Basics - Anfänger-Themen 6
N Java CSV Datei auslesen Java Basics - Anfänger-Themen 6
F Webseiten Quelltext auslesen Java Basics - Anfänger-Themen 5
J Datei auslesen (nur bestimmte Stellen) Java Basics - Anfänger-Themen 2
I csv auslesen, mittels List Java Basics - Anfänger-Themen 18
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
G If / While Programm (Datei auslesen) Java Basics - Anfänger-Themen 6
S Aus einer .bz2 Datei auslesen Java Basics - Anfänger-Themen 2
K Textdatei auslesen und über Mqtt schicken Java Basics - Anfänger-Themen 4
B Name von Verzeichnis bekommen - Files von einem Ordner auslesen Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D XML von Seite auslesen Jsoup Java Basics - Anfänger-Themen 2
I Druckerauflösung auslesen - mittlerweile möglich? Java Basics - Anfänger-Themen 4
B WSDL auslesen? Java Basics - Anfänger-Themen 8
D Methoden Textdokument erstellen und auslesen. Java Basics - Anfänger-Themen 46
B HTML Code / Seite auslesen und JAVA Objekte erstellen Java Basics - Anfänger-Themen 12
S Datein auslesen und verarbeiten Java Basics - Anfänger-Themen 1
J Geld speichern und wieder auslesen Java Basics - Anfänger-Themen 10
S CSV auslesen UTF-8 Problem Java Basics - Anfänger-Themen 7
D Datei auslesen & Werte in Variable speichern Java Basics - Anfänger-Themen 12
K String buchstaben auslesen Java Basics - Anfänger-Themen 9
S Amazon Produktbeschreibung auslesen und nach Keywords suchen Java Basics - Anfänger-Themen 2
x-tshainge Interface Wie kann ich aus Textfeldern auslesen Java Basics - Anfänger-Themen 6
Z Ersten Buchstaben eines Elements eines String-Arrays auslesen Java Basics - Anfänger-Themen 5
B .txt. Datei auslesen und bestimmten Wert wiedergeben Java Basics - Anfänger-Themen 5
CptK x wert eines Bildes auslesen Java Basics - Anfänger-Themen 1
T Website auslesen Java Basics - Anfänger-Themen 2
T String auslesen bzw. überprüfen Java Basics - Anfänger-Themen 1
L CSV Auslesen Java Basics - Anfänger-Themen 5
B Auslesen von PDF / Bilder Java Basics - Anfänger-Themen 5
das_leon Alle Zeilen einer CSV-Datei auslesen Java Basics - Anfänger-Themen 1
D Mit Java HTML bzw Javascript auslesen Java Basics - Anfänger-Themen 1
F Arrays Sätze speichern und einzelne Worte mit Index Angabe auslesen Java Basics - Anfänger-Themen 4
F Zwischenwerte aus Browser auslesen Java Basics - Anfänger-Themen 19
S Jede Ziffer einer Zahl auslesen, damit rechnen und beim Ergebnis wiederholen ? Java Basics - Anfänger-Themen 20
G Servlet - externe HTML (URL) auslesen Java Basics - Anfänger-Themen 1
T class Datei auslesen Java Java Basics - Anfänger-Themen 5
P Liste auslesen und in Variablen speichern Java Basics - Anfänger-Themen 7
D String erste Zahl mit LKZ auslesen lassen Java Basics - Anfänger-Themen 36
J Hashmap auslesen Java Basics - Anfänger-Themen 7
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
D String untereinander auslesen lassen Java Basics - Anfänger-Themen 2
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
DaCrazyJavaExpert Variablen Zahlen aus Strings auslesen Java Basics - Anfänger-Themen 4
J Informationen aus Webseiten auslesen Java Basics - Anfänger-Themen 1
S Text aus einer HTML Datei auslesen Java Basics - Anfänger-Themen 1
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
dragonfight86 Erste Schritte OpenDocument auslesen Java Basics - Anfänger-Themen 13
I Texte mit Absätzen in Dateien speichern und auslesen Java Basics - Anfänger-Themen 1
W DNS Name auslesen + weitere Anfängerfrage Java Basics - Anfänger-Themen 4
C Werte aus JTable auslesen Java Basics - Anfänger-Themen 4
Chrizzey45 Calc-Dokument in Java auslesen? Java Basics - Anfänger-Themen 2
B Datei auslesen und 2D-Array anlegen Java Basics - Anfänger-Themen 1
B Key auslesen/ausgeben innerhalb von foreach() Java Basics - Anfänger-Themen 5
M Eigenschaften einer Datei auslesen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben