rfind实现使用发现
问题描述:
我是新的python,我试图用find来实现rfind函数。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的建议应该是有帮助的。
答
我觉得你的算法应该是这样实现:
def rfind_imp(s, t):
fpos = -1
while True:
pos = s.find(t, fpos + 1)
if pos == -1:
return fpos
fpos = pos
另一种算法,这可能更快与t
许多ocurrences字符串: (编辑:做它适用于具有多个字符的字符串)
def rfind2(s, t):
pos = s[::-1].find(t[::-1])
if pos == -1:
return pos
return len(s) - pos - len(t)
+0
谢谢。你的实现看起来不错。 – mousey 2012-03-23 21:59:28
答
也许是这样的:
def rfind_imp(s, t):
fpos = 0
while(True):
fpos = s.find(t, fpos)
if fpos == -1:
return pfpos
else:
pfpos = fpos
fpos += 1
你可以尝试'reverse()'函数。 – kev 2012-03-23 19:57:46