gpt4 book ai didi

string - 将两个字符串连接在一起

转载 作者:行者123 更新时间:2023-12-04 11:27:33 25 4
gpt4 key购买 nike

我想使用将两个字符串连接在一起的 Haskell 定义我自己的中缀运算符。但是,我想添加一个额外的子句,其中运算符将连接两个字符串中的重叠元素。所以一个例子是

"eagle" myinfix "eagleeyes" = "eagleeyes"
"water" myinfix "book" = "waterbook"
"need" myinfix "education" = "needucation"

我已经想出了如何返回字符串中的重叠部分:
check x y = head $ filter (`isPrefixOf` y) (tails x)

但我不知道如何将其纳入。有什么帮助吗?

最佳答案

你正在以稍微错误的方式去做。

(+++) :: Eq a => [a] -> [a] -> [a]
xs +++ ys | xs `isPrefixOf` ys = ys
(x:xs) +++ ys = x : (xs +++ ys)

也就是说,你并不真正关心重叠是什么,你只关心你是否达到了它。

这是另一个没有显式递归的解决方案。
(++++) :: Eq a => [a] -> [a] -> [a]
xs ++++ ys = prefix ++ ys
where (prefix, _) : _ = filter (\(_, overlap) -> overlap `isPrefixOf` ys) $ zip (inits xs) (tails xs)

在这里,我们开始寻找重叠,如您的 check ,但我们没有保留重叠,而是产生 xs 的部分那不重叠。

关于string - 将两个字符串连接在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12777669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com