题解 | #编号子回文I#
编号子回文I
https://www.nowcoder.com/practice/db5995cd4783483f8b9f7a9e3b3a479f?tpId=354&tqId=10595786&ru=/exam/oj/ta&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D354
package main
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return string字符串
*/
func longestPalindrome( s string ) string {
// write code here
n:=len(s)
maxl:=0
maxr:=0
maxLen:=1
for i:=0;i<n*2-1;i++{
l:=i/2
r:=(i+1)/2
for l>=0 && r<n && s[l]==s[r]{
if r -l +1 > maxLen{
maxl =l
maxr =r
maxLen =r -l +1
}
l--
r++
}
}
return s[maxl:maxr+1]
}
知识点:中心扩展算法
解题步骤:就是枚举每一个中心点向外扩展的回文串的长度,取最大的。有多少个中心点呐,总共有2*n-1个,找规律,举个例子aba,中心点就有a,b,a,ab,ba 五个 == 2*len(aba)-1 ==5
OPPO公司福利 1126人发布
查看4道真题和解析