LegendaryBeazt
Mitglied
Hey,
ich hatte schonmal eine Frage bezüglich dieser Aufgabe gestellt und hab darauf super Hilfe bekommen.
Jetzt habe ich folgende Frage:
Der Code-Ausschnitt funktioniert, stoppt aber immer, wenn er das erste mal einen gesuchten uchstaben findet.
So erzeugt die erste Ausgabe die richtige Antwort (return 6), die zweite ergibt aber eins, weil (glaube ich zumindest) nach dem ersten o iin Spongebob geprüft wird, ob der nachfolgende Buchstabe ein b ist. Dies ist er nicht, daher wird -1 (nicht vorhanden) zurückgegeben.
Wie könnte ich die Funktion umschreiben bzw. was müsste man tun, um die Suche zu verbessern?
ich hatte schonmal eine Frage bezüglich dieser Aufgabe gestellt und hab darauf super Hilfe bekommen.
Jetzt habe ich folgende Frage:
Der Code-Ausschnitt funktioniert, stoppt aber immer, wenn er das erste mal einen gesuchten uchstaben findet.
Code:
#include <iostream>
#include <string>
using namespace std;
int find(string s, string pattern)
{
for(int unsigned i=0;i<s.size();i++)
{
if(s[i] == pattern[0])
{
for(int unsigned j=1;j<pattern.size();j++)
{
if(s[i+j] != pattern[j])
{
return -1;
}
} return static_cast<int>(i);
}
} return -1;
}
int main()
{
cout << find("spongebob", "bo") << endl; //Ausgabe 6 --> Passt
cout << find("spongebob", "ob") << endl; //Ausgabe -1 --> Passt nicht
return 0;
}
Wie könnte ich die Funktion umschreiben bzw. was müsste man tun, um die Suche zu verbessern?