Оптимизация линейного поиска

У меня есть проблема, которая заключается в следующем: вам дают строку s, состоящую только из двух символов "a" и "b", и целое число n. Рассмотрим строку t, которая является результатом объединения n копий s. например, если s равно aba, а n равно 2, то t равно abaaba (то есть s*2). Пожалуйста, как я могу найти количество подстрок, в которых значение 'a' строго больше, чем значение 'b'. Для приведенного выше примера это пять причин: "а", "аба", "абаа", "абааб", "абааба". Линейный поиск, как и следовало ожидать, дает вердикт TLE.(Мой код ниже делает именно это)

    for _ in xrange(int(raw_input())):
    c = 0
    s, n = raw_input().split(); n = int(n)
    ss = s * n
    h = 0
    while h <= len(ss):
        t = ss[0:h]
        if t.count('a') > t.count('b'):
            c += 1
        h += 1
    print c 

0 ответов

Другие вопросы по тегам