Функция 'in' для ручной строки не работает, если подстрока находится в конце слова - PullRequest
1 голос
/ 30 сентября 2019

Я пытаюсь вручную написать функцию Python string in для назначения. Используя этот код, где s - строка, а t - подстрока, которую я пытаюсь найти:

def test(s, t):
    stidx = 0
    while stidx < len(s):
        idx = 0
        for i in s[stidx:]:
            if idx < len(t):
                if t[idx] == i:
                    idx += 1
                    continue
                else:
                    break
            if idx == len(t):
                return True
        stidx += 1
    return False

Приведенный выше код работает, за исключением случаев, когда я проверяю подстроку в самом концеслово (например, s = 'happy' и t = 'py'). Если я добавлю произвольный символ в конец s, это будет работать. Почему это?

1 Ответ

0 голосов
/ 30 сентября 2019

может быть?

def test(s, t):
    """
    :param s:   exp: happy
    :param t:   exp: py
    :return:
    """
    tmp = result = 0
    t_len = len(t)
    while tmp <= len(s)-t_len:
        if s[tmp: tmp+t_len] == t:
            result = 1
            break
        else:
            tmp += 1
            continue

    return bool(result)
...