c++ - 给定一个单词和一段文本,我们需要返回出现的字谜

标签 c++ algorithm

给定一个单词和一段文本,返回文本中该单词的字谜出现次数。 例如。单词是“for”,文本是“forxxorfxdofr”,“for”的变位词将是“ofr”、“orf”、“fro”等。所以这个特定示例的答案是 3。

我有蛮力方法,它获取单词的所有排列,然后比较文本是否包含它,并增加出现次数,但这是 O(N^2) 方法。我正在寻找更好的复杂性。

最佳答案

您可以简单地查找字符数。

例如,您正在寻找look 的变位词。所以,您正在寻找:

  • 一个 4 个字符长度的单词,
  • 1 l、2 o 和 1 k。

简单处理前 4 个字母,存储计数。检查您是否有匹配项。 添加下一个字符(递增),删除旧字符(递减)。再检查一遍。 等等……

关于c++ - 给定一个单词和一段文本,我们需要返回出现的字谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18811511/

相关文章:

C++ - 通过引用派生调用的基本实现?

c++ - 如何在类 debian 系统中使用 libapt(或 libept)来列出包并获取它们的信息?

C++ MSVC - 显示未捕获的异常消息

c++ - 将来自 switch 语句的信息存储到变量中?

c++ - 当类具有 operator() 时的结构特化

java - 哈希表大小设置

.net - ASP.NET VB - .NET 的一些数学运算

c++ - 如何在 C++ 中找到两个 std::hash_set 的交集?

algorithm - 自行车马拉松 (JBOI 2013)

java - 如何在 Java 中测试一副纸牌是否洗得足够多