我正在处理LeetCode问题Longest Palindromic Substring,并且有以下代码:
def longestPalindrome(s):
"""
:type s: str
:rtype: str
"""
length = len(s)
lookup = [[False for i in range(1000)] for j in range(1000)]
for i in range(0,length):
lookup[i][i] = True
longestBegin = i
maxL = 1
for i in range(0,length-1):
if s[i] == s[i+1]:
lookup[i][i+1] = True
longestBegin = i
maxL = 2
for len in range(3,n+1):
i = 0
while i <= n-len+1:
j = i + len -1
if lookup[i+1][j-1] and s[i] == s[j]:
lookup[i][j] = True
longestBegin = i
maxL = len
return s[longestBegin:longestBegin+maxL]
当我调用函数longestPalindrome('abdad')
时,我收到错误:
“运行时错误消息: 第7行:UnboundLocalError:在赋值“。
之前引用的局部变量'len'任何帮助都将不胜感激。
答案 0 :(得分:0)
您使用len
作为本地变量名称,通过for
循环指定它:
for len in range(3,n+1):
这使len
成为整个函数中的本地,掩盖了内置的len()
函数。您不能将名称len
用作本地名称和全局名称。
因此,使用length = len(s)
失败,因为本地名称len
尚未分配任何内容(它尚未绑定)。为for
循环目标使用不同的名称。