2011-10-02 71 views
-3

给定一个任意长度的字符串值,你应该确定彼此的字典的单词的频率。如何在字符串中查找字谜频率?

public static Map<String, Integer> generateAnagramFrequency(String str) 
{ ... } 

例如: 查找 - > 1个 艺术 - > 2 在 - > 1 : 你的输出应该是一个地图如果字符串为 “在购物车和DNA TRAC老鼠找到艺术” - > 1 购物车 - > 2 和 - > 2

该键应该是第一个出现的单词,数字是该单词的字母数(包括其自身)的数量。

我想出的解决方案是对所有单词进行排序,并比较两个字符串中的每个字符,直到字符串结束。这将是O(logn)。我正在寻找其他有效的方法,它不会改变被比较的2个字符串。谢谢。

+0

它看起来很像家庭作业。你可以先告诉我们你不成功的方法。 –

+0

@belisarius我用我的解决方案更新了这个问题。请删除投票,以便我可以提出问题。我现在被禁止问问题:( – false9striker

回答

1

我写了一个创建n-gram(word分析)的JavaScript实现,在Extract keyphrases from text (1-4 word ngrams)

这个函数可以很容易的改变来分析字形的频率:
用替换s = text[i];,这样字符的顺序就不再重要了。

1

通过按字母顺序排列字母,为每个单词创建一个“签名”。按照他们的签名对单词进行排序。按顺序运行排序的列表;如果签名与以前的签名相同,则有一个字谜。