まず、要件
二、背景
(1)回文:同一の文字列を読み込み、長所と短所
(2)指数は、対応する文字列を検索します
S:文字列
(S)の文字のインデックスを要求するには
(1)S.index(単数または複数)は端部のみを見つけることができないSに対応する最初のインデックスを検索します
(2)[I S [i]の==の場合範囲内((S)LEN)のために]#完全にインデックス部分を見つけることができ
第三に、問題解決のためのアイデア
その後、インデックスに対応する文字が、後でそれに等しい文字列、およびこの文字列決意機能回文の傍受、回文の長さより大きな新旧回文の長さであればよりを取るために1、新しいパリンドロームで置き換えます古い回文
クラスソリューション: デフ longestPalindrome(自己、S:STR) - > STR: もしS: longpalindromes = S [0] 用の I における範囲()S(LEN): データ = S [I + 1 ::] B = S [I] インデックス = [R 用の R における範囲(LEN(データ))もしデータ[R] == B] のための J でインデックス: 新しい = self.palindrome(S [I:I + J + 2 ]) 場合(新しい)> lenのLEN(longpalindromesを): longpalindromes = 新しい リターンはlongpalindromes 他: リターン 「」 デフ(自己、STR)を回文: revers_str = STR [:: - 1 ] の場合 revers_str == STR: リターンSTR 他: リターン []
(2)時間の複雑さは、どのように時間の複雑さを軽減するために高いのですか?