Я просматривал некоторые вопросы об интервью Amazon на CareerCup.com и натолкнулся на этот интересный вопрос, который я так и не смог выяснить, как это сделать.Я думал об этом с 2-х дней.Либо я отказываюсь от подхода, либо это действительно сложная функция для записи.
Вопрос заключается в следующем:
Напишите функцию на C, которая может найти, еслистрока является подстрокой другого.Обратите внимание, что несоответствие одного символа должно игнорироваться.
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’
Возвращаемое значение не упоминалось в вопросе, поэтому я предполагаю, что сигнатура функции может выглядеть примерно так:
char * MatchWithTolerance(const char * str, const char * substr);
Если есть совпадение спо заданным правилам вернуть указатель на начало совпавшей подстроки в строке.Иначе верните null.
Бонус
Если кто-то также может найти общий способ сделать допуск к n вместо 1, то это было бы просто блестяще.В этом случае подпись будет:
char * MatchWithTolerance(const char * str, const char * substr, unsigned int tolerance = 1);
Спасибо всем, кто попытается это сделать и поделится своим успешным решением.