这个算法有名字吗?(我一直称它为changeBinary)
描述:
您将二进制字符串作为输入.
输出的第一位与输入的第一位相同.
如果输入字符串的索引处的位与输入字符串中前一个索引处的位相同,则此后的每个位都为0.否则,它是1.
例如,
输入:00011000001010100001001000010011
输出:00010100001111110001101100011010
这是一个简单的JavaScript实现:
var changeBinary = function(binaryString){
var output = binaryString[0] === '0' ? '0' : 1;
for (var i = 1; i < binaryString.length; i++){
var nextBit = binaryString[i] === binaryString[i - 1] ? '0' : '1';
output += nextBit;
}
return output;
}
Run Code Online (Sandbox Code Playgroud)
意见:
首先,似乎如果继续将算法应用于字符串,它最终会返回其原始值.其次,它所需的迭代次数似乎总是2的幂(包括2 ^ 0 = 1).例如,如果将changeBinary函数应用于上面的字符串32次以上,它将返回原始值.
有没有人曾经遇到过这个问题,如果有的话,你知道有关它的任何其他信息吗?
在我看来,这是一个如此简单和基本的东西,有人必须更深入地研究它.
任何反馈将不胜感激.