2015-12-20 21 views
0

我正在解決LeetCode上的算法問題(第5個問題,如果您想先讀取問題 https://leetcode.com/problems/longest-palindromic-substring/)。 我寫python程序:這兩個python程序有什麼區別?

class Solution(object): 
    def longestPalindrome(self, s): 
     """ 
     :type s: str 
     :rtype: str 
     """ 
     l = 1 
     if len(s) < 2: 
      return s 
     result = s[0] 
     for end in range(1, len(s)): 
      if end - (l + 1) >= 0 and s[end - (l + 1):end + 1] == s[end - (l + 1):end + 1][::-1]: 
       l += 2 
       result = s[end - (l + 1):end + 1] 
       continue 
      elif end - l >= 0 and s[end - l:end + 1] == s[end - l:end + 1][::-1]: 
       l += 1 
       result = s[end-l:end+1] 
     return result 

當我測試使用它 'ABBA' 作爲輸入:它輸出 'BA'。 然後,我發現在討論一個python溶液,該程序是這樣的:

class Solution: 
    # @return a string 
    def longestPalindrome(self, s): 
     if len(s) == 0: return 0 
     maxLen = 1 
     start = 0 
     for i in xrange(len(s)): 
      if i - maxLen >= 1 and s[i - maxLen - 1:i + 1] == s[i - maxLen - 1:i + 1][::-1]: 
       start = i - maxLen - 1 
       maxLen += 2 
       continue 
      if i - maxLen >= 0 and s[i - maxLen:i + 1] == s[i - maxLen:i + 1][::-1]: 
       start = i - maxLen 
       maxLen += 1 
     return s[start:start + maxLen] 

當我它使用「ABBA」作爲輸入測試時,其輸出「ABBA」正確。 我是一個非常新的python初學者,所以我總是被Python中傳遞參數的困惑所困擾。那麼,有誰能告訴我爲什麼這兩個python程序會得到兩個不同的結果? 在此先感謝。

+0

添加一些打印和步驟代碼,你將能夠弄清楚它 –

回答

0

您在更改l之間確定有一個迴文和您使用l將該回文分配給result。在這兩個地方。