मान लीजिए कि हमारे पास एक पाठ है। हमें सबसे बड़ा संभव 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