我正在解决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程序得到两个不同的结果? 提前谢谢。