我是一个python入门者,我正在尝试解决Lintcode上的Longest Palindromic Substring问题。描述是:“给定一个字符串S,找到S中最长的回文子字符串。您可以假设S的最大长度为1000,并且存在一个唯一最长的回文子字符串。”我运行了我的代码,它显示了
第12行,在ispalindrome中,而k [0] == k [-1]:IndexError:字符串索引超出范围。
我真的不知道如何提出这个错误。任何人都可以帮我查看我的代码。
writeWithValue
答案 0 :(得分:0)
代码应如下所示:
def longestPalindrome(s):
# write your code here
if len(s) == 0 or len(s) == 1:
return s
else:
def ispalindrome(k):
while k and (k[0]==k[-1]):
k = k[1:-1]
if len(k) > 1:
return False
else:
return True
longestPalindromeLength=-1
palindromeToReturn=None
for i in s:
if s.rfind(i) > s.find(i):
subStr = s[s.find(i):s.rfind(i)+1]
if ispalindrome(subStr) == True and longestPalindromeLength<len(subStr):
longestPalindromeLength=len(subStr)
palindromeToReturn=subStr
return palindromeToReturn
答案 1 :(得分:0)
这是我的解决方案,也许你喜欢它!但代码不在python中,而是在js中,但您可以使用逻辑
var temparry = []
function Fsociety (){
for (var i = 0; i < input.length; i++) {
for (var j = 0; j <=input.length - i; j++) {
//skipping empty strings
if (input.substring(i, i + j) !== '') {
if (input.substring(i, i + j) === input.substring(i, i + j).split("").reverse("").join("")) {
temparry.push(input.substring(i, i + j).length)
}
}
}
}
return temparry
}
console.log(Math.max(...Fsociety(input)))// I'm telling math to give me the max value inside the temparry and here i'm passing function as a value
// console.log(Fsociety(input))
<块引用>
<---- 在第二个 if 语句中,我告诉 js 检查它是否是 回文与否首先将其拆分为单个元素,然后 反转它然后我将简单地加入它,因为它是我将使用的字符串 === 告诉 js 检查它们是否相等是根据回文的定义,如果一个单词等于它的反向那么它是 回文 ---->