假设 S 是一个只包含 0 和 1 的字符串。我想计算 S 的非空子字符串的数量,其中 0 的数量小于 1 的数量。
使用下面给出的蛮力方法,我们可以有一个算法在 O(n^2) 中解决这个问题:
moreOnes(s):
count = 0
n = s.len()
for i = 1 to n
one = 0
zero = 0
for j = i to n
if s[i] == '1'
one++
else
zero++
if one > zero
count++
return count
但是我们能不能有一个更好的时间复杂度为 O(n*logn) 或 O(n) 的算法,并且空间复杂度是从 O(1) 到 O(n) 的任何值?