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 接受一个二进制字符串作为输入,并返回该字符串任意旋转的开头和结尾连续放置的最大零的数量。
-
第一步是找出原始二进制字符串中零的数量。这是通过使用一个 while 循环来完成的,该循环会一直持续,直到遇到非零字符为止。零的数量存储在 originalZeros 变量中。
-
下一步是找出二进制字符串的每个旋转中零的数量。为了做到这一点,我们使用一个 for 循环,从 1 开始,一直到二进制字符串的长度。在每次循环迭代中,我们检查当前字符是否为 0 。如果是,则增加 rotatedZeros 计数。如果不是,则将 rotatedZeros 计数重置为 0。最后,通过将 rotatedZeros 与 maxZeros 进行比较,并保留较大的值,更新迄今为止看到的最大零的数量。
-
循环结束后,返回最大零的数量。
-
最后,函数的示例用法展示了如何使用二进制字符串调用该函数,并将结果记录到控制台。