我有一个任务是获取字符串中相同数字的每次出现的距离,它的时间复杂性应该是O(N),所以它不应该使用嵌套的for循环.
例如,如果我的字符串包含"100101",并且我需要计算1之间的距离,那么总距离将是10.(因为第一个和第二个的距离为3,第一个和最后一个的距离为5,第二个和最后一个的距离为2).
我确实得到了使用嵌套for循环的正确答案,但我不明白如何在没有嵌套循环的情况下实现这一点.
我当前的代码:
def pairs(s):
array = []
total = 0
for i in range(len(s)):
if s[i] == "1":
array.append(i)
for k in reversed(array):
array.remove(k)
for j in reversed(array):
total += k - j
return total
if __name__ == "__main__":
print(pairs("100101")) # 10
print(pairs("101")) # 2
print(pairs("100100111001")) # 71