1

S が 0 と 1 のみを含む文字列であるとします。0 の数が 1 の数よりも少ない、S の null でない部分文字列の数を数えたいと思います。

以下に示す総当り法を使用して、この問題を 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) のいずれかであるアルゴリズムを使用できるでしょうか?

4

1 に答える 1