【问题标题】:Write a program that prints the number of times the search keyword occurs in s with javascript [duplicate]编写一个程序,用javascript打印搜索关键字在s中出现的次数[重复]
【发布时间】:2020-03-09 18:36:22
【问题描述】:

这是分配给我的一个基本作业问题,从逻辑的角度来看,我似乎不明白如何去做。最后一个问题是在小写字符串中搜索关键字。

这是最后一个问题。

  • 问题2
  • 假设 s 是一串小写字符和一个搜索关键字。
  • 编写一个程序,打印 搜索关键字出现在 s 中。

示例:

  1. 假设 s = 'azcbobobegghakl' 并且搜索关键字是 'bob'
  2. 你的程序应该打印出 Bob 出现的次数是:2

在搜索关键字之前,我已经能够使用 javascript 方法制作程序,但它只返回了 1 次出现的“bob”。我遇到的问题是理解如何解决这个问题的逻辑。如果这是一个字符串数组,或者它是一个带有空格的字符串,以便将单词分开,那么我明白该怎么做。但这只是让我感到困惑。

这仅从字符串 'azcbobobegghakl' 返回 1 次出现的 'bob' 但教授希望它返回 2 次出现。

function searchForKeyWord(str, keyword) {
  return str.match(keyword).length;
}

【问题讨论】:

  • 出现了 2 次。 bobob - 鲍勃鲍勃
  • 不,它仍然返回 1 次。

标签: javascript algorithm


【解决方案1】:

您可以构建自己的搜索功能,而不是使用正则表达式。 一个简单的循环,用于将每次出现与关键字进行比较:

const s = 'azcbobobegghak';
const search = 'bob';

function searchForKeyWord(str, keyword) {
  if(!keyword || !str) return 0;
  
  let counter = 0;
  const l = keyword.length;
  for( let i = 0 ; i < str.length - l; i++) {
    counter += str.substring(i,i+l) === keyword ? 1 : 0;
  }
  return counter;
}


const output = searchForKeyWord(s,search);
console.log(output);

【讨论】:

    【解决方案2】:

    使用索引来跟踪你的最后一个搜索字符串索引,如果找到一个字符串,则递增计数器,然后在子字符串中从最后一个找到的 index+searchedword.length 开始再次搜索,如果没有找到字符串返回

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 2022-10-09
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      相关资源
      最近更新 更多