Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Gast Gast
|
Verfasst am: 30. März 2005 19:16 Titel: Neuling in Java |
|
|
Hallo Leute,
habe ein ziemlich großes Problem und weiß echt nicht mehr weiter. Schreibe in einer Woche meine erste Informatik-Klausur und ich bin gerade am bearbeiten von alten Klausuraufgaben. In der Aufgabe in der ich nicht weiterkomme geht es um folgendes:
Programmieren Sie zu dem Methoden-Kopf
boolean stringVergleich(char[] array1, char[] array2, int zahl)
einen Methoden-Rumpf, so dass stringVergleich genau dann den Wert true liefert, wenn zahl aufeinander folgende Elemente von array1 gleich zahl aufeinander folgenden Elementen von array2 sind. Dabei können die gleichen Elemente in array1 und array2 an verschiedenen Stellen stehen, d.h. ab verschiedenen Indizes beginnen.
Beispiel:
{'F', 'i', 'n', 'g', 'e', 'r'} {'W', 'e', 'i', 'n', 'g', 'l', 'a', 's'} zahl = 3
Die Wert der Methode ist true weil 'i', 'n', 'g' übereinstimmen
Kann mir jemand helfen der der programmierung dieser Methode?
Ist wirklich dringend. Vielen Dank für eure Unterstützung.
Bye |
|
Nach oben |
|
|
|
Tobias
Anmeldungsdatum: 15.02.2005 Beiträge: 149
|
Verfasst am: 30. März 2005 21:52 Titel: |
|
|
Versuchs mal mit der Holzhammer-Methode. Also alles durchprobieren.
Gegeben sind zwei Eingaben
und
Jetzt wird eine Größe n gegeben. Dazu suchst du einen Index
, so dass dazu ein Index existiert mit:
Jetzt versuch mal über alle i, j mit entsprechenden Schleifen zu prüfen. |
|
Nach oben |
|
|
kurellajunior Administrator
Anmeldungsdatum: 14.02.2005 Beiträge: 214 Wohnort: Berlin-Pankow
|
Verfasst am: 01. Apr 2005 11:45 Titel: |
|
|
Nicht vergessen, dass Arrays mit dem Index 0 beginnen.
Effizienter wird es wahrscheinlich bei großen strings, wenn Du dir die String.compare methode zu nutze machst, die kann nämlich u.a. auch regex
dann brauchst du nur noch eine Schleife, die aus dem ersten array alle mögliche Teilstrings der Länge zahl herausholt und per JavaFunktionalität den zweiten String überprüft. Dazu musst Du das zweite Array in einen String umwandeln.
Jan _________________
|
|
Nach oben |
|
|
mr. black
Anmeldungsdatum: 20.02.2005 Beiträge: 39 Wohnort: Krumbach
|
Verfasst am: 02. Apr 2005 20:57 Titel: |
|
|
regex ist warscheinl. am sinnvollsten.
Aber warum char[] ? Warum nicht String?
oder wennst des ned möchtest StringBuffer. _________________ Zeit ist, was man auf einer Uhr abliest. A.E. |
|
Nach oben |
|
|
jovi
Anmeldungsdatum: 04.04.2005 Beiträge: 4 Wohnort: München
|
Verfasst am: 04. Apr 2005 13:31 Titel: |
|
|
Also in einer Informatikklausur sollte man versuchen, so eine Aufgabe rekursiv zu lösen, da das oft (logisch und bzgl. Aufwand) einfacher ist
und vielleicht auch so erwatet wird.
Ungefähr so: Fallunterscheidung - wenn die jeweils ersten Zeichen der Strings gleich sind, dann ... ; falls nicht dann ... ;
wobei bei den rekursiven Aufrufen die Gesamtlänge
der beiden Strings natürlich immer streng kleiner werden sollte. |
|
Nach oben |
|
|
Tobias
Anmeldungsdatum: 15.02.2005 Beiträge: 149
|
Verfasst am: 05. Apr 2005 01:12 Titel: |
|
|
mach mal vor! |
|
Nach oben |
|
|
jovi
Anmeldungsdatum: 04.04.2005 Beiträge: 4 Wohnort: München
|
Verfasst am: 05. Apr 2005 14:24 Titel: |
|
|
Äh - es ist mindestens schon 10 Jahre her, als ich sowas gemacht habe.
Ok, ich mache ein wenig weiter; Also:
0) wenn Länge(array1) < zahl OR Länge(array2) < zahl dann return(false)
1) wenn die jeweils ersten Zeichen der Strings gleich sind, dann
falls <zahl> == 1 dann return(true)
sonst return(stringVergleich(REST(array1), REST(array2), zahl-1))
2) wenn die jeweils ersten Zeichen der Strings ungleich sind, dann
return(stringVergleich(REST(array1), array2, zahl) OR stringVergleich(array1, REST(array2), zahl))
ich hoffe das stimmt so. |
|
Nach oben |
|
|
kurellajunior Administrator
Anmeldungsdatum: 14.02.2005 Beiträge: 214 Wohnort: Berlin-Pankow
|
Verfasst am: 05. Apr 2005 15:06 Titel: |
|
|
Prinzip stimmt, aber...
Bei zwei Strings der Länge 400 bekommst Du einen ganz schönen Stack zusammen, mmh *denk*
im Schlimmsten Fall länge1 + Länge2 - zahl. Spätestens beim Vergleich von zwei Texten (Länge 2000) knallt Dir der Stack um die Ohren... _________________
|
|
Nach oben |
|
|
Gast
|
Verfasst am: 05. Apr 2005 15:44 Titel: |
|
|
Na das ist doch der Vorteil von Klausuraufgaben - es muss nur theoretisch stimmen, ob es auch auf einem echten Rechner in vernünftiger Zeit klappt ist unwichtig.
Wobei ich diese Lösung sogar als effizient einschätzen würde (aber da kann man sich bei Rekursionen leicht vertun). Wie war das nochmal, werden Rekursionen nicht schon vom Compiler aufgelöst ..., achso ist ja ein Java-Board - weiss auch nicht. |
|
Nach oben |
|
|
jovi
Anmeldungsdatum: 04.04.2005 Beiträge: 4 Wohnort: München
|
Verfasst am: 05. Apr 2005 15:49 Titel: |
|
|
Sorry, der vorige Beitrag war natürlich nicht von Gast sondern von mir. |
|
Nach oben |
|
|
|