是两串字谜?

时间:2015-03-31 14:23:07

标签: haskell

我想找到两个字符串是否是字谜... 我想对它们进行排序,然后逐个检查,但有没有任何算法来排序蜇?还是另一个想法呢? (简单的想法或代码因为我是初学者)谢谢

3 个答案:

答案 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