diff --git a/README.md b/README.md index 6b49d46..bdb7552 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # **Python.Basic-course** -Education -Алгоритмы и структуры данных на Python. Базовый курс. Учебные задания на портале GeekBrains. +Education +Алгоритмы и структуры данных на Python. Базовый курс. +Учебные задания на портале GeekBrains. ## **Lesson 1** @@ -66,3 +67,7 @@ Education 1. Отсортируйте по убыванию методом "пузырька" одномерный целочисленный массив, заданный случайными числами на промежутке [-100; 100). Выведите на экран исходный и отсортированный массивы. Сортировка должна быть реализована в виде функции. По возможности доработайте алгоритм (сделайте его умнее). 2. Отсортируйте по возрастанию методом слияния одномерный вещественный массив, заданный случайными числами на промежутке [0; 50). Выведите на экран исходный и отсортированный массивы. + +## **Lesson 8** + +1. Определение количества различных подстрок с использованием хэш-функции. Пусть дана строка S длиной N, состоящая только из маленьких латинских букв. Требуется найти количество различных подстрок в этой строке. diff --git a/lesson-08/lesson-08.py b/lesson-08/lesson-08.py new file mode 100644 index 0000000..11b4f84 --- /dev/null +++ b/lesson-08/lesson-08.py @@ -0,0 +1,16 @@ +'''1. Определение количества различных подстрок с использованием хэш-функции. +Пусть дана строка S длиной N, состоящая только из маленьких латинских букв. +Требуется найти количество различных подстрок в этой строке.''' + +import hashlib + +string = input('Введите строку, состоящую только из маленьких латинских букв') + +sum_substring = set() + +for i in range(len(string)): + for j in range(len(string), i, -1): + hash_str = hashlib.sha1(string[i:j].encode('utf-8')).hexdigest() + sum_substring.add(hash_str) + +print(f'{len(sum_substring) -1} различных подстрок в строке {string}')