我是python的新手,我正在尝试使用find实现rfind函数。
def rfind_imp(s,t):
ss = s
fpos = 0
while(True):
fpos = s.find(t,fpos)
ss=ss[fpos:]
if(ss):
fpos = fpos +1
else:
return fpos
print rfind_imp("I saw a donkey,I saw a saw "," ")
print "I saw a donkey,I saw a saw ".rfind(" ")
但我面临的问题是我获得第16个字符作为rfind值。有人可以帮我找到我在做错的地方。另外,使用find更好地实现rfind的任何建议都应该有所帮助。
答案 0 :(得分:1)
我认为您的算法应该像这样实现:
def rfind_imp(s, t):
fpos = -1
while True:
pos = s.find(t, fpos + 1)
if pos == -1:
return fpos
fpos = pos
对于t
多次发生的字符串,另一种算法可能更快:
(编辑:使其适用于具有多个字符的字符串)
def rfind2(s, t):
pos = s[::-1].find(t[::-1])
if pos == -1:
return pos
return len(s) - pos - len(t)
答案 1 :(得分:0)
可能是这样的:
def rfind_imp(s, t):
fpos = 0
while(True):
fpos = s.find(t, fpos)
if fpos == -1:
return pfpos
else:
pfpos = fpos
fpos += 1