在 JavaScript 中查找句子数组中字符串数组的精确个体计数


在给定的问题陈述中,我们必须借助 Javascript 功能找到句子数组中字符串数组的精确个体计数。因此,我们将使用 for 循环来获得所需的结果。

理解问题

手头的问题是借助 Javascript 查找句子数组中每个字符串的精确个体计数。我们将得到一个字符串数组和一个句子数组。因此,我们必须找出每个字符串在给定句子中出现的次数。例如

Suppose we an array of strings as -
Strings = [“car”, “cycle”, “bike”] and
Sentence = ['I have a car and a bike.''];

So if we compare and check for the strings in the sentence we will have 
{ car: 1, cycle: 0, bike: 1 }

在上面的输出示例中,我们可以看到在检查给定句子后,“car”的计数为 1,“cycle”的计数为 0,“bike”的计数为 1。

给定问题的逻辑

为了解决给定的任务,我们将采用两步法。首先,我们将为字符串数组中的每个字符串初始化一个零计数。之后,我们将迭代句子数组中的每个句子,并计算每个字符串在句子中的出现次数。最后,我们将拥有每个字符串的个体计数。

为了匹配句子中的字符串,我们将使用带有单词边界的正则表达式。这是我们可以将字符串作为一个整体单词而不是另一个单词的一部分进行计数的方式。然后,我们将使用 match 方法查找字符串在句子中的所有出现次数。最后,我们将得到一个对象,其中包含每个字符串的个体计数,键将是字符串本身,值将是计数。

算法

步骤 1:由于我们必须找出给定句子中字符串的计数,我们将从定义函数并将其命名为 countStrings 开始程序。此函数将有两个参数:第一个是字符串数组作为 strings,第二个是句子数组作为 sentences。

步骤 2:声明完成给定任务的函数后,我们将定义一个空对象并将其命名为 counts。此对象将存储给定句子中每个字符串的计数。

步骤 3:现在我们需要迭代给定的 strings 数组。因此,首先我们将使用 counts 变量将每个字符串的初始计数设置为零。

步骤 4:迭代 strings 后,现在是时候迭代给定的 sentence 数组了。对于每个句子,我们将迭代 strings 数组中的每个字符串。在此迭代中,我们将创建一个带有字符串周围单词边界的正则表达式以匹配精确的单词。我们还将使用 match 方法查找字符串在给定句子中的所有出现次数。

步骤 5:由于我们已经声明了正则表达式和 match 方法,我们的下一个任务是验证匹配项。如果我们找到了匹配项,我们将计数保存在 count 变量中,否则将 count 值设置为 0。

步骤 6:按照上述步骤,我们将通过将 count 添加到现有计数来增加 counts 对象中当前字符串的计数,最后我们将返回 counts 对象以显示句子中给定字符串的计数。

示例

// Create a function to count the strings
function countStrings(strs, sentences) {
   const counts = {};

   for (let i = 0; i < strs.length; i++) {
      counts[strs[i]] = 0;
   }

   for (let i = 0; i < sentences.length; i++) {
      const sentence = sentences[i];
      for (let j = 0; j < strs.length; j++) {
         const string = strs[j];
         // Create a regular expression for word matching
         const regex = new RegExp('\b' + string + '\b', 'gi');
         const matches = sentence.match(regex);
         const count = matches ? matches.length : 0;
         counts[string] += count;
      }
   }

   return counts;
}

const strs = ['apple', 'banana', 'orange'];
const sentences = ['I have an apple and a banana.', 'She likes orange but i like banana.'];
const result = countStrings(strs, sentences);
console.log(result);

输出

{ apple: 0, banana: 0, orange: 0 }

复杂度

代码的时间复杂度为 O(k * n * p),其中 k 是句子数组的大小,n 是字符串数组的大小,p 是句子中字符的总数。代码的空间复杂度为 O(n),这里 n 是字符串数组的长度。因此我们可以说,复杂度取决于句子的数量、字符串数组的大小以及单个字符串和句子的长度。

结论

由于我们已经成功实现了查找句子数组中字符串数组的精确个体计数的代码。由于我们使用了正则表达式和匹配函数来计算每个字符串的计数,因此该代码有效地计算了计数。但是对于大型输入,时间复杂度可能会影响性能。

更新于:2023年8月14日

230 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告