Frage von FlascheSocke, 28

Probleme mit Arrays in Java komme im folgenden nicht weiter Kann mir jemand Tipps geben, wie ich das zu lösen habe?

"Man soll eine Zeichenkette von der Konsole in ein neues Array einlesen und prüfen, ob und ggf. an welcher Stelle diese Zeichenkette als Teilzeichenkette im ursprünglichen Array vorkommt (z. B. "als" kommt in "Halskrause" an Stelle 2 vor)."

Antwort
von regex9, 5

Im Prinzip musst du durch einen zeichenweisen Vergleich das 1. Vorkommen des ersten Buchstaben des Suchstrings im gegebenen Array finden und von da an je Schritt und Erfolg den Substring um das 1. Zeichen kürzen. Bei einem Misserfolg musst du beim Suchstring wieder von vorn beginnen. Den Erfolg oder Misserfolg definiert der zeichenweise Vergleich.

Pseudocode:

letzter Fund x = 0
Startposition = -1

iteriere über input (Halskrause) iteriere über substring (als), beginnend ab x wenn input[i] gleich substring[j] merke Startposition wenn x = 0 inkrementiere x sonst x = 0 Startposition = -1 stop
gib Startposition zurück
Antwort
von Berny96, 18

Wenn du wirklich Hilfe willst musst du schon deinen Ansatz hier rein posten und eine spezifische Frage an welcher Stelle du nicht mehr weiterkommst denn die Aufgabe ist nicht gerade ein Einzeiler und niemand will dir von vorn bis hinten erklären wie man vorgeht. Also bitte sag uns doch an welcher Stelle du nichts mehr verstehst.

Kommentar von FlascheSocke ,

mit einem Buchstaben würde ich das hinkriegen, aber hierbei geht es um eine Zeichenkette. Das versteh ich noch nicht so ganz.

Kommentar von Berny96 ,

Also bei mir wäre das alles in einer Methode die den ursprünglichen String und den zu suchenden annimmt und den Index wo es anfängt zurück gibt (falls vorhanden). Da drin suchen wir zuerst nach den ersten Buchstaben. Wenn du die gefunden hast, wende eine Methode an der Stelle an die ab da guckt ob die Zeichenkette mit den Nächstvorkommenden Zeichen im Einklang ist.

ca. so:

istVorhanden(ursprünglicheZeichenkette,zeichenkette)
for(int i.....){
 if(//buchstaben gefunden)
     if(istRestGleich(i, ursprungszk, zeichenkette){
       return i;
     }
 return null;
}

Hier die istRestGleich Methode:

istRestGleich(index, ursprungszk, zk){
 for(int i = index; i < index + zk.length; i++){
   if(ursprungszk.charAt(i) !== zk.charAt(i-index))
     return false;
  }
 return true;
}


So grob verstanden?

Keine passende Antwort gefunden?

Fragen Sie die Community