【发布时间】:2022-02-03 18:30:10
【问题描述】:
我想输入两个字符串,例如“Hello”和“Hi”,我想同时遍历两个字符串中的每个元素,并逐个比较每个字符。实际程序中两个字符串的长度应该是5,如果一个char相等,返回true,否则返回false。
我想到的程序应该在“Hello”中看到“H”,在“Hi”中看到“H”并返回真,然后我希望它检查“Hello”中的“e”和“Hello”中的“i” “嗨”并返回假。我希望它继续这样做,直到没有什么可比较的。我想我可能需要使用递归,但我不确定如何在这个程序中真正实现它。
我尝试使用最大范围为 5 的 x:xs 所以 [0..5],但它根本不起作用。
我的代码(不工作):
uncurryingString :: String -> Int -> Char
uncurryingString a b = a !! b
match :: String -> String -> [Int] -> Bool
match a b (x:xs)
| uncurryingString a [x+1 | x <- xs] == uncurryingString b [x+1 | x <- xs] = True
| otherwise = False
【问题讨论】:
-
我对你的问题有点困惑,因为你说“实际程序中的两个字符串长度应该是 5”,但是“Hello”和“Hi”显然没有相同的长度.
-
除了两个字符串之外,将数字列表传递给
match函数有什么意义? -
提供 2 个输入和预期输出的清晰示例可能有助于澄清问题。
-
@Julia 我很抱歉!我使用了它们,因为它们看起来很简单,在程序中它可能类似于“Hello”和“Horse”。很抱歉因为我没有解释而造成的混乱!
标签: haskell