0基础教程习题20—查找子串

查找子串


1、题目要求

 

实现字符串find方法,返回子串所在的位置

def find(string,sub)


 

2、程序分析

 

2.1 找到匹配子串第一个字符的位置
在目标字符串里,首先要找到和子串第一个字符相同的字符,因为这是可能的子串开始的位置

2.2 当第一步完成后,接下来要比较剩余的部分是不是完全匹配
这一步尤为关键,虽然找到了匹配子串第一个字符的位置,但还不能确定这就是子串开始的位置,接下来要逐个比对,确定从这个位置开始,目标串的每一个字符都匹配子串对应位上的字符


 

3、示例代码

 

#coding=utf-8
string = "I love python"
sub = 'pyth'

def find(string,sub):
    index = -1
    for i in range(len(string)):
        if string[i] == sub[0]:
            m = i
            n = 0
            while m < len(string) and n<len(sub) 
            and string[m] == sub[n]:
                m += 1
                n += 1
            if n == len(sub):
                index = i
                break

    return index

print find(string,sub)