Как заставить мою программу работать быстрее при вводе больших строк? - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь оперировать количеством вхождений каждого элемента и вычесть из него целое число. На данный момент это мой код, требуется много времени, когда inputize становится очень большим. Я использовал Counter, и он работает с ним хуже.

s=input()
C=int(input())
total=0
for i in set(s):
    if s.count(i)>C:
        total=total+s.count(i)-C
print(total)

1 Ответ

2 голосов
/ 05 мая 2020

У вас есть класс collections.Counter.

Counter - это подкласс словаря для подсчета различных элементов. И я думаю, вам не нужны его ключи, вам нужны только значения счетчика.

from collections import Counter

s = input()
C = int(input())
total = sum(c - C for c in Counter(s).values() if c > C)
print(total)

объяснение:

  • Counter(s).values() дает итератор для значений счетчика.
  • (c - C for c in ...) создает объект-генератор с вычитанием и фильтрацией.
  • sum(...) возвращает его сумму.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...