Решение задачи Leetcode «1813. Сходство предложений III» с использованием регулярных выражений ⇐ Python

Программы на Python
Anonymous
Решение задачи Leetcode «1813. Сходство предложений III» с использованием регулярных выражений

Сообщение Anonymous »

Я пытаюсь решить эту проблему в Leetcode, используя регулярные выражения (просто ради интереса):

Вам даны две строки предложения1 и предложение2, каждое из которых
представляет предложение, состоящее из слов. Предложение представляет собой список
слов, разделенных одним пробелом, без начальных и конечных
пробелов. Каждое слово состоит только из английских
символов верхнего и нижнего регистра.
Два предложения s1 и s2 считаются похожими, если это возможно
вставить произвольное предложение (возможно, пустое) внутри одного из этих
предложений так, чтобы два предложения стали равными. Обратите внимание, что
вставленное предложение должно быть отделено от существующих слов пробелами.
Например,
  • Код: Выделить всё

    s1 = "Hello Jane"
    и s2 = «Привет, меня зовут Джейн» можно сделать равными, вставив «меня зовут» между «Привет» и «Джейн» в с1.
  • Код: Выделить всё

    s1 = "Frog cool"
    и s2 = "Лягушки - это круто" не похожи, поскольку хотя в s1 и вставлено предложение "s are", оно
    не разделяется от "Frog" через пробел.
Для двух предложений предложения 1 и предложения 2 вернуть true, если

Код: Выделить всё

sentence1
и предложение2 похожи. В противном случае верните false.

Предполагая, что small и big являются меньшими и большими предложениями соответственно, легко проверить, маленькие ли и большие предложения. — это префикс/суффикс большого :

Код: Выделить всё

if re.match(f'^{small} .*$', big) or re.match(f'^.* {small}$', big):
print('similar')
Как лучше всего проверить, можно ли сделать предложения равными, вставив новое предложение в середину маленького с помощью регулярного выражения?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-regexes

Вернуться в «Python»