JavaScript程式查詢二進位制字串任意旋轉後開頭和結尾連續放置的0的最大數量


我們將編寫一個JavaScript程式來查詢二進位制字串任意旋轉後開頭和結尾連續放置的0的最大數量。我們的程式將接收一個二進位制字串作為輸入,並返回在給定字串的任意旋轉中開頭和結尾連續放置的0的最大數量。為了解決這個問題,我們將使用字串操作技術來操作輸入字串並找到所需的輸出。

在下一步中,我們將旋轉輸入字串並計算旋轉字串開頭和結尾連續放置的0的數量。我們將繼續旋轉字串,直到再次到達原始輸入字串,並在所有旋轉過程中跟蹤開頭和結尾連續放置的0的最大數量。

最後,我們將返回0的最大數量作為程式的輸出。該程式將是高效的,並且將線上性時間複雜度內執行,使其即使對於大型輸入也適合解決此問題。

方法

要查詢二進位制字串任意旋轉後開頭和結尾連續放置的0的最大數量,請按照以下步驟操作:

  • 首先,將原始二進位制字串與其自身連線起來形成一個新字串。

  • 接下來,使用迴圈透過在每次迭代中將一個字元從開頭移動到新字串的結尾來生成所有可能的二進位制字串旋轉。

  • 對於每次旋轉,查詢字串開頭和結尾連續放置的0的數量。

  • 將迄今為止找到的0的最大數量儲存在一個變數中。

  • 重複步驟3和4,直到所有旋轉都已處理。

  • 變數中儲存的最終值是二進位制字串任意旋轉後開頭和結尾連續放置的0的最大數量。

示例

以下是一個JavaScript程式的示例,該程式查詢二進位制字串任意旋轉後開頭和結尾連續放置的0的最大數量:

function maxZeros(binaryString) {
   
   // Store the number of zeros in the original binary string
   let originalZeros = 0;
   while (binaryString[originalZeros] === "0") {
      originalZeros++;
   }
   
   // Store the number of zeros in each rotation of the binary string
   let maxZeros = originalZeros;
   let rotatedZeros = originalZeros;
   for (let i = 1; i < binaryString.length; i++) {
      if (binaryString[i] === "0") {
         rotatedZeros++;
      } else {
         rotatedZeros = 0;
      }
      maxZeros = Math.max(maxZeros, rotatedZeros);
   }
   
   // Return the maximum number of zeros
   return maxZeros;
}

// Example usage
let binaryString = "0110001111";
let maxZerosCount = maxZeros(binaryString);
console.log("The maximum number of zeros is: " + maxZerosCount);

解釋

  • 函式maxZeros接收一個二進位制字串作為輸入,並返回該字串任意旋轉後開頭和結尾連續放置的0的最大數量。

  • 第一步是找到原始二進位制字串中0的數量。這是透過使用while迴圈完成的,該迴圈持續到遇到除0以外的字元為止。0的數量儲存在originalZeros變數中。

  • 下一步是查詢二進位制字串每個旋轉中0的數量。為此,我們使用一個for迴圈,該迴圈從1開始,一直持續到二進位制字串的長度。在迴圈的每次迭代中,我們檢查當前字元是否為0。如果是,則我們增加rotatedZeros計數。如果不是,則我們將rotatedZeros計數重置為0。最後,我們透過比較rotatedZerosmaxZeros並保留兩者中較大的一個來更新迄今為止看到的0的最大數量。

  • 迴圈結束後,返回0的最大數量。

  • 最後,函式的示例用法顯示瞭如何使用二進位制字串呼叫它,並將結果記錄到控制檯。

更新於:2023年3月15日

101 次檢視

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.