leetcode - 。5パリンドローム最長部分文字列

我的程序:
クラスの
ソリューション(オブジェクト): デフlongestPalindrome(自己、秒): "" " タイプS:STR :RTYPE:STR """ もし S == '' リターン '' 場合でlen(s)は== 1 リターン秒の 解像度を = [] のために、私は範囲(lenが(S)): = cで。S [I:]カウント(S [i])と あれば 、C = 1! B = sの[:: - 1 ]。インデックス(S [i])と J = LEN(S)-b-1 であればS [I:J + 1] == S [I:J + 1] [:: - 1] I =!J: res.append(S [I:J 1 ]) C - = 1 トン = S [I:J] 場合 LEN(T)== 2 もし T [0] == T [1 ]: res.append(t)は ブレーク ブレーク B [:: - 1 = T ] .INDEX( T [0]) J = LEN(T)-b-1の 場合のt [:J + 1] == Tの[:J + 1] [:: - 1] J =!0: res.append(Tの[:J +1 ]) C- = 1 一方、 C> 1 のT =秒:[I iが+ j]を場合 lenは(T)== 2 もし T [0] = = T [1 ]: res.append(T)破るブレーク B = T [:: - 1 ] .INDEX(T [0]) J = LEN(T)-b-1の 場合のt [:J + 1 ] ==トンの[:J + 1] [:: - 1] J =!0: res.append(Tの[:J +1 ]) C- = 1 であれば LEN(RES)== 0: リターンS [0] であれば LEN(RES)== 1 戻りRES [0] 、M = MAX(LEN( RES [i])とするための I における範囲(LEN(RES))) のための I における範囲(LEN(RES)) 場合でlen(RES [i])と== M: 戻り RES [I]
実行時:2192ミリ秒は、Pythonの提出内のすべてのユーザーの50.51パーセントを打ちます
メモリ消費量:115.1メガバイトは、Pythonの提出内のすべてのユーザーの5.06パーセントを打ちます
 
約2時間でそれを行うことは容易ではないが、しかし、非常に長いったらしい場所が残っていました。
20の実行である場合にMS例の
 クラスソリューション(オブジェクト):
     DEF longestPalindrome(セルフ、S):
         "" " タイプS:STR 
        :RTYPE:STR 
        " "" 
     IF LEN(S)< 2 又はS == S [: :-1]:
        Sを返します

        長さ = 1 

        even_medium = 0 
        even_left = 0の
         ための I における範囲(LEN(S) - 1 ):
             もし I - even_left> = 0  S [I - even_left] == S [I + 1 ]:
                サブストリング = sで[I - even_left:I + 2 ]
                 であればサブ==サブ[:-1 ]:
                    even_medium = Iの
                    長さ = even_left + 2 
                    even_left = even_left + 2 

        odd_medium =0             
        半分 =(長さ+ 1)// 2 
        odd_left =(長さ+ 1)// 2
         のための J における範囲(半分、LEN(S) - 半分):
             もし J - odd_left> = 0  S [J - odd_left] == S [J + ハーフ]:
                サブストリング = sの[J - odd_left:J +半分+ 1 ]
                 であれば、[:-1サブ==ストリング]:
                    odd_medium = Jの
                    長さ = odd_left +半分+ 1 
                    odd_left = odd_left + 2 もし長%2 ==

        0:
             リターン S [even_medium + 2 -長さ:even_medium + 2 ]
         もし長さ== 1 リターンS [0]
             戻り S [odd_medium +半分+ 1 -長さ:odd_medium +半分+ 1]

分析と改善:

私のプログラムの内部

        もし S == '' リターン '' 
        場合でlen(s)は== 1 リターン・ S

に置き換え:

        もし LEN(S)<2 又は S == S [:: - 1 ]:
             リターン

 

他のよく見ていません。

                                                                        --2019.10.11

 
 
 

おすすめ

転載: www.cnblogs.com/taoyuxin/p/11653794.html