-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhw08_1.py
More file actions
28 lines (22 loc) · 1.19 KB
/
hw08_1.py
File metadata and controls
28 lines (22 loc) · 1.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 1. Определение количества различных подстрок с использованием хеш-функции.
# Пусть дана строка S длиной N. Например, состоящая только из маленьких
# латинских букв. Требуется найти количество различных подстрок в этой строке.
# Для решения задачи рекомендую воспользоваться алгоритмом sha1 из модуля
# hashlib или встроенную функцию hash()
from random import choices
from string import ascii_lowercase
N = 100
def find_substrings(string):
diff_subs = set()
len_str = len(string)
for i in range(1, len_str):
for j in range(0, len_str - i + 1):
sub_string = string[j:j + i]
hash_sub = hash(sub_string)
if hash_sub not in diff_subs:
diff_subs.add(hash_sub)
subs = len(diff_subs)
return subs
s = ''.join(choices(ascii_lowercase, k=N))
# s = 'papa'
print(f'Исходная строка: {s}\n\nКоличество различных подстрок: {find_substrings(s)}')