zoukankan      html  css  js  c++  java
  • 获取字符串中长度最长的回文字符串

    def get_f_l(s_length,s,list_all,last_d):
        max_l=0
        first_d=0
        last_d=0
        for i in range(len(list_all)):
            if((i+1)==len(list_all)):
                break
            for j in range(i+1,len(list_all)):
                diff=list_all[j]-list_all[i]+1
                if(list_all[i]==0):
                    if(list_all[j]==s_length-1):
                        if(s==s[::-1]):
                            return 0,list_all[j]
                    else:
                        if(s[:list_all[j]+1]==s[list_all[j]::-1]):
                            if(diff>max_l):
                                max_l=diff
                                first_d=0
                                last_d=list_all[j]
                else:
                    if(list_all[j]==s_length-1):
                        if(s[list_all[i]:]==s[list_all[j]:list_all[i]-1:-1]):
                            if(diff>max_l):
                                max_l=diff
                                first_d=list_all[i]
                                last_d=list_all[j]
                    else:
                        if(s[list_all[i]:list_all[j]+1]==s[list_all[j]:list_all[i]-1:-1]):
                            if(diff>max_l):
                                max_l=diff
                                first_d=list_all[i]
                                last_d=list_all[j]
        return first_d,last_d
                        
    
    def solution(s):
        s_length=len(s)
        max_len=0
        f=0
        l=0
        s_x=set(s)
        for i in s_x:
            last_d=s.rfind(i)
            list_all=[]
            oper_s=s
            i_num=0
            while(True):
                x=s.find(i,i_num)
                if(not x==-1):
                    i_num=x+1
                    list_all.append(x)
                else:
                    break
            if(len(list_all)==1):
                continue
    
            first_d,last_d=get_f_l(s_length,s,list_all,last_d)
            diff=last_d-first_d
            if(diff>max_len):
                f=first_d
                l=last_d
                max_len=diff
        return s[f:l+1]
        
    s="abccccde"
    print(solution(s))
  • 相关阅读:
    js键盘事件以及键盘事件拦截
    JavaScript 延迟加载
    二叉树深度优先 求二叉树最大深度
    css 小知识点:inline/inline-block/line-height
    es6 set
    CSS 水平垂直居中
    js 位运算符
    js 函数重载
    js之单例模式
    js 面向对象 ES5 AND ES6
  • 原文地址:https://www.cnblogs.com/sea-stream/p/10493421.html
Copyright © 2011-2022 走看看