gpt4 book ai didi

haskell - 检查字符串是否包含给定子字符串并返回 BOOLEAN

转载 作者:行者123 更新时间:2023-12-02 16:00:41 25 4
gpt4 key购买 nike

我试图想出一个带有 2 个字符串参数的 haskell 函数。然后它检查第一个字符串是否包含第二个字符串作为子字符串。例如:“bring”包含子字符串“in”。如果传递“bring”“in”,该函数应返回 true。这是我到目前为止所拥有的,但它并没有真正起作用。部分起作用。我不知道如何在递归情况下分配真实值。

check::[Char]->[Char]->Bool
check [][] =False
check _[] =False
check []_ =False
check(x:xs)(y:ys)
| y==x =True
| otherwise =check xs (y:ys)

main = do
print $ check "bring" "in"

最佳答案

根本不使用库或酷技巧的直接实现可能是:

substring :: String -> String -> Bool
substring (_:_) [] = False
substring xs ys
| prefix xs ys = True
| substring xs (tail ys) = True
| otherwise = False

prefix :: String -> String -> Bool
prefix [] _ = True
prefix (_:_) [] = False
prefix (x:xs) (y:ys) = (x == y) && prefix xs ys

这是天真的子字符串搜索的“规范”方式(我猜用任何编程语言?):对于字符串的每个后缀,检查子字符串是否是前缀。

请注意,子字符串参数位于字符串之前。

关于haskell - 检查字符串是否包含给定子字符串并返回 BOOLEAN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30588221/

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