Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何找到字符串中的字谜频率?_Algorithm_Anagram - Fatal编程技术网

Algorithm 如何找到字符串中的字谜频率?

Algorithm 如何找到字符串中的字谜频率?,algorithm,anagram,Algorithm,Anagram,给定一个任意长度的字符串值,您应该确定单词的频率,这些单词是彼此的字谜 public static Map<String, Integer> generateAnagramFrequency(String str) { ... } publicstaticmap-generateAnagramFrequency(stringstr) { ... } 例如:如果字符串是“为cart和dna trac在老鼠中查找艺术” 您的输出应该是一个映射: 查找->1 艺术->2 在->1中 a

给定一个任意长度的字符串值,您应该确定单词的频率,这些单词是彼此的字谜

public static Map<String, Integer> generateAnagramFrequency(String str)
{ ... }
publicstaticmap-generateAnagramFrequency(stringstr)
{ ... }
例如:如果字符串是“为cart和dna trac在老鼠中查找艺术” 您的输出应该是一个映射: 查找->1 艺术->2 在->1中 a->1 购物车->2 和->2

键应该是单词的第一次出现,数字是该单词的字谜数字,包括单词本身


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

我已经在上编写了一个创建n-gram(单词分析)的JavaScript实现


此函数可以轻松更改以分析字谜的频率:
替换
s=text[i]
by
s=text[i].sort()
,这样字符的顺序就不再重要了。

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

它看起来非常像家庭作业。你可以先告诉我们你不成功的方法。@belisarius我已经用我的解决方案更新了这个问题。请取消否决票,以便我可以提问。我现在被禁止提问:(