0基础教程习题23—反向查找字符串

反向查找子串


1、 题目要求

 

实现函数  rfind(string,sub)  ,反向查找sub在string中的位置

例如字符串 “cdeabcdeaba” 反向查找子串cde ,返回值应该为5


 

2、 程序思路

 

  1. 遍历字符串的过程要从右向左开始
  2. 比较的字符不再是子串的首个字符,而是子串的末尾字符,找到末尾字符后还要比较剩余的部分
  3. 最后还要反向的计算子串开始的位置

 

3、示例代码

 

#coding=utf-8

string = "cdeabcdeaba"
def rfind(string,sub):
    index = -1
    for i in range(len(string)-1,-1,-1):
        if string[i] == sub[-1]:
            m = i
            n = len(sub)-1
            while n >= 0 and m >=0 and string[m] == sub[n]:
                m -= 1
                n -= 1

            if n == -1:
                return m + 1

    return index

print rfind(string,'cde')