Match-Unterzeichenfolge in einer Zeichenfolge mit einer Toleranz von 1 nicht übereinstimmenden Zeichen

Ich habe einige Fragen zu Amazon-Interviews auf CareerCup.com durchgesehen und bin auf diese interessante Frage gestoßen, die ich nicht herausfinden konnte. Ich habe seit 2 Tagen darüber nachgedacht. Entweder nehme ich einen Ausweg oder es ist eine wirklich schwierige Funktion zu schreiben.

Frage lautet wie folgt:

Schreibe eine Funktion in C, mit der festgestellt werden kann, ob eine Zeichenfolge eine Unterzeichenfolge einer anderen ist. Beachten Sie, dass eine Nichtübereinstimmung eines Zeichens ignoriert werden sollte.

A mismatch can be an extra character: ’dog’ matches ‘xxxdoogyyyy’  
A mismatch can be a missing character: ’dog’ matches ‘xxxdgyyyy’ 
A mismatch can be a different character: ’dog’ matches ‘xxxdigyyyy’

Der Rückgabewert wurde in der Frage nicht erwähnt, daher gehe ich davon aus, dass die Signatur der Funktion etwa so lauten kann:

char * MatchWithTolerance(const char * str, const char * substr);

Wenn eine Übereinstimmung mit den angegebenen Regeln vorliegt, setzen Sie den Zeiger an den Anfang der übereinstimmenden Teilzeichenfolge in der Zeichenfolge. Anderenfalls wird null zurückgegeben.

Bonu

Wenn jemand auch einen generischen Weg finden kann, die Toleranz auf n anstatt auf 1 zu setzen, dann wäre das einfach genial. In diesem Fall wäre die Signatur:

char * MatchWithTolerance(const char * str, const char * substr, unsigned int tolerance = 1);

ielen Dank an alle, die dies versuchen und ihre erfolgreiche Lösung teilen möchte

Antworten auf die Frage(10)

Ihre Antwort auf die Frage