比较字符串
问题描述:
def find_last(search, target):
for index, character in reversed(list(enumerate(search))):
if character in target:
return index
else:
return -1
假设搜索=“AAAAA”和目标=“AA”,输出应该= 3,不是4 我试图获得最后的位置,这两个字符串比较比较字符串
答
目前您在做的是将search
字符串中的每个字符以相反的顺序进行比较,并查看它是否在target
。如果是,你过早地返回错误的索引。
相反,我会建议使用str.rfind
方法:
>>> 'aaaaa'.rfind('aa')
3
str.rfind
基本上是同样的事情str.index
法,但它搜索从草堆右侧的第一针。
编辑:为了治疗空针作为目前最右边的指数,你可以使用下面的返回表达式:
def find_last(search, target):
return target and search.rfind(target) or len(search)
,但如果我有一个字符串“22222222”,和目标=” “,输出应该是9,而不是-1。但是rfind并没有考虑到这种情况 –
@SpencerJosephs啊,我明白了。如果目标是空字符串,我编辑了答案以使其返回搜索字符串的长度。 – Shashank