给定一个二进制字符串,即它只包含0和1(零的数量等于1的数量)我们需要通过交换某些位使这个字符串成为一系列备用字符,我们的目标是尽量减少交换次数。
例如,对于字符串“00011011”,最小交换次数为2,其中一种方法是:
1)交换位:0001 10 11 --->> 0001的 01 11
2)交换位(在第一次交换之后):0 0 0101 1 1 --->> 0 1 0101 0 1
请注意,如果给出字符串“00101011”,我们可以将其转换为以0开头的备用字符串(需要3次交换),也可以转换为以1开头的备用字符串(需要一次交换 - 第一次和最后一次交换)位) 因此,在这种情况下,最小值是一次交换。
最终目标是返回给定1和0字符串的最小交换次数。 解决问题的最有效方法是什么?
答案 0 :(得分:0)
琐碎的事情是微不足道的。
010101010…
。注意:如果序列已经"正确",您将获得全部 - 0
比特流(如果您不关心是否从头开始,也可以使用0
或1
)。 XOR在现代CPU上非常有效。我可以做512 bits at a time on my Xeon,我认为需要2个周期。注意:Code published on this site is CC-by-SA。这意味着,当您在软件,家庭作业,考试或作业中使用此答案时,法律要求您说明此答案的网址和用户名。