Как проверить, является ли строка подпоследовательностью другой в схеме - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь создать рекурсивную функцию, которая принимает строку string-1 и проверяет, является ли другая строка string-2 подпоследовательностью.У меня работает несколько базовых сценариев, но я не могу заставить работать всю программу.

Что я пытался сделать, так это реализовать "member?"функция.Я хотел проверить, является ли каждый элемент в строке 2 частью строки 1, но также проверить, находятся ли их символы в порядке.

Например, если задана строка: hello, функция выдаст true, если другая строка: hel, ell, ello, hello или hlo.Функция выдаст false, если другая строка: ehl, oll или helllo.

(define (possible-subset? word subset-word)
  (cond [(> (length (string->list subset-word)) (length (string->list word)) ) false]
        [(equal? (string->list word) (string->list subset-word)) true]))

Приведенный выше код заботится о четких раздачах, которые сообщат вам, является ли слово подмножеством.

Любая помощь будет оценена.Спасибо.

1 Ответ

0 голосов
/ 01 марта 2019

В качестве примера возьмем привет и hlo.

  1. Обе строки начинаются с одного и того же символа, если они удаляют его из обоих.

С этим привет иХло сводится к Элло и Ло

если строка не начинается с того же символа, что и строка запроса, переходите вперед в строке, пока первый символ строки не станет таким же, как первый символ запроса

С этимello и lo сводится к llo и lo, затем правило 1 применяется снова, что приводит к lo и o, где правило 2 сводит его к o и o, а правило 1 сводится к двум пустым строкам

Если запрос пуст, результатом будет совпадение.Если строка пуста, но запрос не является, результат не совпадает.

При этом по правилу 3 результат является совпадением.

...