с помощью программы Haskell как найти общие символы двух строк и отобразить их

#haskell

#haskell

Вопрос:

Мне нужно написать функцию для поиска общих символов двух строк и отображения этих общих символов.Я думаю, что это тривиальная программа, но я не знаю, как объединить функции: с помощью функции elem я могу проверить, есть ли элемент x в строке.С помощью filter я могу использовать только общие элементы, чтобы отобразить их в одной строке. Но как связать / сравнить эти 2 строки.?

Комментарии:

1. Боюсь, я не понимаю вашего вопроса. Если у вас есть общие символы в одной строке, разве это не именно то, что вы уже хотите?

2. Также я немного смущен, если я могу приспособить предыдущую информацию к этому. Два дня назад я искал, как определить, является ли одна строка подстрокой другой. Пример: строка: «Я иду в школу», а затем я хотел узнать, была ли строка «going» подстрокой (true). Но знайте, что мне нужно определить общие символы в любом месте или порядке, например, если вторая строка «else» содержит общие символы (e, l, s), но это не подстрока. Теперь я не знаю общих символов (я считаю, что редактирование было неправильным) на самом деле: найти все символы, которые являются общими для 2 строк, и показать их

Ответ №1:

Вы пытаетесь найти пересечение двух списков?

 Data.List> intersect "haskell" "java"
"a"
  

Комментарии:

1. Пожалуйста, обратите внимание, что вы должны импортировать, Data.List введя import Data.List в верхней части вашего файла, прежде чем сможете использовать intersect .

Ответ №2:

Вы можете использовать сгиб (учитывая две строки li1 и li2):

      foldl (xs x -> if elem x li2 then (x : xs) else xs) [] li1
  

Комментарии:

1. Кроме изменения результата, чем ваш foldl отличается от использования filter ?

Ответ №3:

Вы могли бы filter использовать одну строку для символов, являющихся elems частью другой. И это самый простой способ.