StartseiteSitemapDeutschEnglischKontaktImpressum

Mechatronik an der Universität Stuttgart

Navigation
Letzte Beiträge
Universität Stuttgart Bachelor-Studiengang Mechatronik

Anmelden

Benutzername:   Passwort:   Mich bei jedem Besuch automatisch anmelden  
Aktuelle Zeit: 06.09.2010 11:59

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: String-Teilwort-Methode aus Inf3-VL vom 1.2.07
BeitragVerfasst: 03.02.2007 18:29 
Offline
Super User
Benutzeravatar

Registriert: 20.10.2005 18:42
Beiträge: 489
Wohnort: Kreis LB
Hier das Programm bzw. die Klasse / Methode von Claus aus der Vorlesung am 1.2.07, falls er es nicht mehr online stellt:

Code:
/**
* Sucht ein Stringmuster innerhalb eines Stringtextes.
*
* Aufwand: O(n*n) --> sehr schlecht!
* Optimierung:
* Alle bereits geprüften Buchstaben aus dem Stringtext gleich überspringen und
* nicht erneut mit dem ersten Buchstaben vom Stringmuster vergleichen:
* int kmp (String T, String M) {
*     //Berechne das Feld next
*     int LM = M.length(); int LT = T.length;
*     int i=0; int j=0;
*     while ((j<LM) && (i<LT))
*         if ((T.charAt(i) = M.charAt(i)) || (j=0))
*             {i++; j++;}
*         else j=next[j];
*     if (j=LM) return (i-LM);
*     else return -1;
* }
* Wobei das Feld next wie folgt berechnet wird:
* int i=1; int j=0; next[0]=0;
* while (i<LM)
*     if ((M.charAt(i) = M.charAt(j)) || (j=0))
*         {i++; j++; next[j]=j;}
*     else j=next[j]; // j ist immer kleiner!
*     
* @author Prof. V. Claus
* @version Vorlesung 01.02.207
*
*/
public class Teilwort {

    static String Text = "abcdaddeddadedaadadebjd";
    static String Muster = "ada";
   
    public static void main(String[] args) {
        String T = Text;
        String M = Muster;
        boolean enthalten = false;
        int LM = M.length();
        int LT = T.length();
       
        if (LM <= LT) {
            for (int i=0; i<LT-LM; i++)
                if (T.substring(i,i+LM-1).equals(M)) {
                    /*
                     * Vergleicht den Teilstring von T_i bis T_i+LM-1 mit dem
                     * String M.
                     * T.substring(i,j) liefert als Ergebnis einen String, der
                     * alle Methoden der Klasse String enthält, u.a. auch
                     * equals(s) zum Vergleich des Strings mit einem anderen
                     * String s.
                     */
                    System.out.println("Hurra, ab " + (i+1));
                    enthalten = true;
                }
            if (!enthalten)
                System.out.println("Nicht enthalten");
        }
    }
}


PS: Ich habs nicht überprüft / getestet.

_________________
formerly know as _CatmandOo_


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  

© by autip.de - Letzte Änderung ma 05.03.2009 (fheld)

Administrationsbereich