我们将编写一个 javascript 程序来查找在二进制字符串的任何循环的开头和结尾处连续放置的零的最大数量。我们的程序将采用二进制字符串作为输入,并返回给定字符串的任何旋转中放置在开头和结尾的零的最大数量。为了解决这个问题,我们将使用字符串操作技术来操作输入字符串并找到所需的输出。
在下一步中,我们将旋转输入字符串并计算旋转字符串开头和结尾处的零数量。我们将继续旋转字符串,直到再次到达原始输入字符串,并跟踪所有旋转期间在开头和结尾放置的零的最大数量。
最后,我们将返回最大数量的零作为程序的输出。该程序将非常高效,并且将以线性时间复杂度运行,即使对于大量输入,它也适合解决此问题。
方法要找到在二进制字符串的任何旋转的开始和结束处连续放置的零的最大数量,请按照以下步骤操作 -
首先,将原始二进制字符串与其本身连接起来形成一个新字符串。
接下来,使用循环通过在每次迭代中将一个字符从新字符串的开头移动到结尾来生成二进制字符串的所有可能的旋转。
对于每次旋转,找到字符串开头和结尾连续放置的零的数量。
将迄今为止找到的最大零个数存储在变量中。
重复步骤 3 和 4,直到处理完所有旋转。
存储在变量中的最终值是二进制字符串的任何循环中在开头和结尾处连续放置的零的最大数量。
示例下面是一个 javascript 程序的示例,该程序查找在二进制字符串的任何旋转的开始和结束处连续放置的零的最大数量 -
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 usagelet binarystring = 0110001111;let maxzeroscount = maxzeros(binarystring);console.log(the maximum number of zeros is: + maxzeroscount);
说明函数 maxzeros 将二进制字符串作为输入,并返回在该字符串的任何旋转的开始和结束处连续放置的零的最大数量。
第一步是查找原始二进制字符串中零的数量。这是通过使用 while 循环来完成的,该循环一直持续到遇到 0 以外的字符。零的数量存储在originalzeros变量中。
下一步是找到二进制字符串每次循环中零的数量。为此,我们使用从 1 开始直至二进制字符串长度的 for 循环。在循环的每次迭代中,我们检查当前字符是否为 0。如果是,我们增加 rotatedzeros 计数。如果不是,我们将 rotatedzeros 计数重置为 0。最后,我们通过比较 rotatedzeros 与 maxzeros 来更新迄今为止看到的最大零数。 >并保留两者中较大的一个。
循环结束后,返回最大数量的零。
最后,该函数的示例用法展示了如何使用二进制字符串调用它,并将结果记录到控制台。
以上就是javascript 程序查找二进制字符串任意循环中在开头和结尾处连续放置的 0 的最大数量的详细内容。