2015-04-07 265 views
2
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 我試圖獲得最後的位置,這兩個字符串比較比較字符串

回答

3

目前您在做的是將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) 
+0

,但如果我有一個字符串「22222222」,和目標=」 「,輸出應該是9,而不是-1。但是rfind並沒有考慮到這種情況 –

+0

@SpencerJosephs啊,我明白了。如果目標是空字符串,我編輯了答案以使其返回搜索字符串的長度。 – Shashank