Добавил:
mtuciboy
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные 1-5 для Вариант 19 / lab3
.pyimport time
def bad_char_table(pattern):
table = {}
for i in range(len(pattern) - 1):
table[pattern[i]] = len(pattern) - 1 - i
return table
def search_pattern(text, pattern, case_sensitive=True):
if not case_sensitive:
text = text.lower()
pattern = pattern.lower()
n = len(text)
m = len(pattern)
if n < m:
return -1
bad_char = bad_char_table(pattern)
i = m - 1
while i < n:
j = m - 1
while j >= 0 and text[i] == pattern[j]:
i -= 1
j -= 1
if j == -1:
return i + 1
else:
i += max(1, bad_char.get(text[i], m))
return -1
def main():
text = input("Введите строку: ")
pattern = input("Введите подстроку для поиска: ")
case_sensitive = input("Учитывать регистр (да/нет): ").lower()
if case_sensitive == 'да':
case_sensitive = True
else:
case_sensitive = False
start_time = time.time()
result = search_pattern(text, pattern, case_sensitive)
end_time = time.time()
if result != -1:
print(f"Подстрока найдена в позиции {result}")
else:
print("Подстрока не найдена")
search_time = end_time - start_time
print(f"Время выполнения поиска упрощенным методом Бойера-Мура: {search_time} секунд")
start_time = time.time()
if case_sensitive:
result = text.find(pattern)
else:
result = text.lower().find(pattern.lower())
end_time = time.time()
if result != -1:
print(f"Подстрока найдена в позиции {result}")
else:
print("Подстрока не найдена")
python_search_time = end_time - start_time
print(f"Время выполнения поиска методом Python: {python_search_time} секунд")
if __name__ == "__main__":
main()