这两个python程序有什么区别?

时间:2015-12-20 01:09:37

标签: python

我正在解决LeetCode上的算法问题(如果你想先读问题,第五个问题 https://leetcode.com/problems/longest-palindromic-substring/)。 我写了一个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 个答案:

没有答案
相关问题