给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
func centerSpread(s string, left int, right int)string{
i,j := left,right
for i>=0 && j<len(s){
if s[i]==s[j]{
i--
j++
}else{
break
}
}
return s[i+1:j]
}
func longestPalindrome(s string) string {
if len(s)<2{
return s
}
res := string(s[0])
for i:=0;i<len(s)-1;i++{
maxStr := ""
oddStr := centerSpread(s,i,i)
evenStr := centerSpread(s,i,i+1)
if len(oddStr)>len(evenStr){
maxStr = oddStr
}else{
maxStr = evenStr
}
if len(maxStr)>len(res){
res = maxStr
}
}
return res
}
本文介绍了一种高效算法,用于在给定字符串中找出最长的回文子串。通过中心扩展法,算法能处理奇数和偶数长度的回文情况,适用于字符串长度最大为1000的问题。
241

被折叠的 条评论
为什么被折叠?



