Определите, является ли строка. подмножество другой строки. Не используйте содержит или в ключевых словах - PullRequest
0 голосов
/ 01 апреля 2020

Предположим, я прошу пользователя ввести две строки. Я хочу выяснить, является ли меньшая строка подстрокой большей. Мне не разрешено использовать команду contains() или любые другие ярлыки.

Я пытался поместить их в разные списки:

def strtolist(sub_string, string):
    subl=[]
    for i in sub_string:
        subl.append(i)
    print('subl', subl)
    strl=[]
    for e in string:
        strl.append(e)
    print('str', strl)

sub_string = 'App'
string = 'Application'

strtolist(sub_string, string)

Есть предложения о том, что делать дальше?

1 Ответ

0 голосов
/ 01 апреля 2020

Вам не нужно составлять списки. Просто l oop над длинной строкой и проверьте, существует ли подстрока в каждой позиции.

long_string = "This is a long string"
short_string = "a long"
short_len = len(short_string)
for i in range(len(long_string) - short_len):
    if long_string[i:i+short_len] == short_string:
        print("substring found at index", i)
        break
else:
    print("Substring not found")

l oop перебирает индексы символов в long_string. В каждом индексе он получает подстроку, начинающуюся с этого индекса и содержащую short_len символов. Поэтому, когда i == 5, она получает подстроку от 5 до 10, то есть 'is a l'. Он сравнивает эту подстроку со строкой, которую мы ищем, и, если она совпадает, выводит сообщение об успешном завершении и выходит из l oop.

Блок else: запускается в конце l oop если все закончилось нормально, не вырвавшись. Если мы туда попадем, то никогда не найдем подходящей подстроки.

...