在 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 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告