我想找到两个字符串是否是字谜... 我想对它们进行排序,然后逐个检查,但有没有任何算法来排序蜇?还是另一个想法呢? (简单的想法或代码因为我是初学者)谢谢
答案 0 :(得分:7)
字符串是Haskell中的字符列表,因此标准sort
只能起作用。
> import Data.List
> sort "hello"
"ehllo"
你想要排序然后比较听起来很好用于检查字谜。
答案 1 :(得分:1)
我可以给你和想法 - (因为我不太熟悉haskell)。 取一个有26个空格的数组。
现在,对于第一个字符串中的每个字符,您将增加数组中的证明位置。
如果是数组A[26]={0,0,...0}
现在如果你找到'a'然后放A[1]=A[1]+1
;
if'b'然后A[2]=A[2]+1
;
现在,如果每个字符都有第二个字符串,则减少在同一个数组中找到的每个字符的值。(如果你发现'a'减少A [1],如A[1]=A[1]-1
)
最后检查所有数组元素是否为0。如果为0那么肯定他们是anagram,而不是anagram。
注意:您可以类似地对大写字母进行扩展。
答案 2 :(得分:1)
没有必要在每个字母上计算人群。
简单地说,您可以对字符串进行排序,然后检查两个列表中的每个元素。
例如,你有这个
"cinema" and "maneci"
将字符串变成字符列表会很有帮助。
['c','i','n','e','m','a'] and ['m','a','n','e','c','i']
然后,您可以对这些列表进行排序,然后检查每个字符。 请注意,您将遇到以下情况:
example [] [] = True
example [] a = False
example a [] = False
example (h1:t1)(h2:t2) = if h1==h2 then _retroactively_ else False