toxa_1995
@toxa_1995
Начинающий...

Как заменить пару символы на драгие пары символов в строке?

Вводится строка, нужно в этой строке заменить пару символов на другую пару символов, например,
Такая строка "ababbbbaaa"
И заменить ab на ba на языке Haskell
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
youngmysteriouslight
@youngmysteriouslight
ТК, ТТ, JS, FP, WM
Однострочник
f :: String -> String -> String -> String
f str a b = let n = length a in if take n str == a then b ++ f (drop n str) a b else if str == "" then "" else head str : f (tail str) a b

Свойства решения: ленивое, работает с бесконечными строками, заменяет первое вхождение подстроки a на b в случае неоднозначной замены (напр., f "aaa" "a" "b" == "ba"), временная сложность O(N) по N = length(str).
Что можно улучшить: 1) обработка хвоста длины < length(b), 2) оформить код как многострочную читаемую функцию, 3) выделить функцию \s -> f s a b как локальную или даже поменять исходных порядок аргументов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы