#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
частью другой. И это самый простой способ.