pythontip 100days-day32

题目

实现函数is_startswith,如果字符串source是以substr开头的,则函数返回True,反之返回False

例子

is_startswith('python','py') -> True
is_startswith('python','java') -> False

假设

  1. 输入一定为字符串类型
  2. 输入可能为空串

tips

  1. 首先要判断传入的参数是否合法,这里默认传入的都是字符串,那么我们要需要判断字符串是否有空串的情况
  2. 如果substr的长度大于source的长度,直接返回False
  3. 从索引0开始,遍历substr,从source上获得相同索引的字符,两者进行比较,只要有一个字符不相同,则可以立即返回False

答案

解法1

def is_startswith(source, substr):
    """
    判断字符串source是否以substr开头
    :param source:
    :param substr:
    :return:
    """
    if not source or not substr:
        return False

    if len(substr) > len(source):
        return False

    for index, item in enumerate(substr):
        if item != source[index]:
            break
    else:
        return True  # 如果for循环不是因为break结束的,就会进入到else语句块

    return False

性能

  1. 时间复杂度O(n)
  2. 空间复杂度O(n)

关键点

  1. 首先要判断传入的参数是否合法,这里默认传入的都是字符串,那么我们要需要判断字符串是否有空串的情况
  2. 如果substr的长度大于source的长度,直接返回False
  3. 从索引0开始,遍历substr,从source上获得相同索引的字符,两者进行比较,只要有一个字符不相同,则可以立即返回False