pythontip 100days-day33

实现字符串find

实现字符串的find函数,返回字符串source中 子串target开始的位置, 从start索引开始搜索,如果可以找到多个,返回第一个,如果找不到返回-1

例子

my_find('this is a book', 'this') -> 0
my_find('this is a book', 'this', start=1) -> -1

假设

  1. source,target一定为字符串类型

tips

  1. 朴素的两重循环

解法:

def my_find(source, target, start=0):
    """
    返回字符串source中 子串target开始的位置, 从start索引开始搜索
    如果可以找到多个,返回第一个
    :param source:
    :param target:
    :param start:
    :return:
    """
    if source == '' or target == '':
        return -1
    if len(source[start:]) < len(target):
        # 如果source的长度小于target的长度,返回-1
        return -1

    for i in range(len(source) - start):
        if start + i + len(target) > len(source):
            return -1
        if source[start + i:start + i+len(target)] == target:
            return start + i

    return -1