最长回文串

 
  
回文就是中心对称的单词。从字符的中心开始,向两边扩散检查回文。
这需要维护一个指针,从头开始,以每一个位置为中心遍历一遍。
这比暴力遍历所有子串省了很多重复判断。
以某个字符为核心一旦探测到边界,更长的的串就都不再考虑。
复杂度O(n^2)。注意,回文需要同时检查单核`aba`以及双核`abba`的情况。
代码:
res = ""
maxs = 0
def findHuiwen(newstr):
    if newstr == None or len(newstr) == 0:
        return ""
    if len(newstr) == 1:
        return newstr
    for i in range(len(newstr) - 1):
        checkSame(newstr,i,i)
        checkSame(newstr,i,i+1)
    return res

def checkSame(newstr,start,end):
    global maxs
    global res
    while start >=0 and end < len(newstr):
        if newstr[start] == newstr[end]:
            max = end - start + 1
            if max > maxs:
                maxs = max
                res = newstr[start:end+1]

            start -= 1
            end += 1

        else:
            return

res = findHuiwen("c")
print(res)






你可能感兴趣的:(数据结构)