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