मान लीजिए कि हमारे पास एक पाठ है। हमें सबसे बड़ा संभव k खोजना है जैसे कि एक [1], ए [2], ..., ए [के] मौजूद हो:प्रत्येक ए [i] एक गैर-रिक्त स्ट्रिंग है; उनका संयोजन a[1] + a[2] + ... + a[k] दिए गए पाठ के बराबर है; 1 से k तक के सभी i के लिए, a[i] =a[{k+1 - i}].
इसलिए, यदि इनपुट "antaprezatepzapreanta" जैसा है, तो आउटपुट 11 होगा, क्योंकि हम इसे "(a)(nt)(a)(pre)(za)(tpe)(za)(pre)( ए)(एनटी)(ए)"।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
प्रारंभ:=0, अंत:=पाठ की लंबाई - 1
-
खाली स्ट्रिंग के साथ temp1 और temp2 को इनिशियलाइज़ करें
-
उत्तर =1 जब टेक्स्ट की लंबाई विषम हो, अन्यथा 0
-
प्रारंभ करते समय <अंत, करें -
-
temp1 :=temp1 + text[शुरू]
-
temp2 :=text[end] + temp2
-
अगर temp1 temp2 के समान है, तो -
-
temp1 और temp2 को खाली स्ट्रिंग के रूप में सेट करें
-
उत्तर:=उत्तर + 2
-
-
प्रारंभ:=प्रारंभ + 1
-
अंत:=अंत - 1
-
-
अगर टेक्स्ट की लंबाई सम है और (temp1 या temp2 खाली नहीं है)
-
उत्तर:=उत्तर + 1
-
-
वापसी उत्तर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution(object): def longestDecomposition(self, text): start = 0 end = len(text)-1 temp1 = "" temp2 = "" ans = 1 if len(text) & 1 else 0 while start<end: temp1+=text[start] temp2 = text[end]+temp2 if temp1 == temp2: temp1 = temp2 = "" ans+=2 start+=1 end-=1 if len(text)%2 == 0 and(temp1 or temp2): ans += 1 return ans ob = Solution() print(ob.longestDecomposition("antaprezatepzapreanta"))
इनपुट
"antaprezatepzapreanta"
आउटपुट
11