मान लीजिए कि हमारे पास एक पाठ है। हमें सबसे बड़ा संभव 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|a|nt|a" की तरह विभाजित कर सकते हैं।पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
काउंटर :=0
-
i:=1, j:=टेक्स्ट का आकार - 1
-
आईसी:=0, जेसी:=टेक्स्ट का आकार
-
जबकि मैं <=j, करता हूं
-
यदि टेक्स्ट का सबस्ट्रिंग [इंडेक्स आईसी से आई -1] टेक्स्ट के सबस्ट्रिंग के समान है [इंडेक्स जे से जेसी -1], तो
-
काउंटर :=काउंटर + 2
-
आईसी:=मैं
-
जेसी:=जे
-
-
मैं :=मैं + 1
-
जे:=जे - 1
-
-
अगर आईसी जेसी के समान नहीं है, तो
-
काउंटर :=काउंटर + 1
-
-
वापसी काउंटर
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें
def solve(text): counter = 0 i, j = 1, len(text) - 1 ic, jc = 0, len(text) while i <= j: if text[ic:i] == text[j:jc]: counter += 2 ic = i jc = j i += 1 j -= 1 if ic != jc: counter += 1 return counter text = "antaprezatepzapreanta" print(solve(text))
इनपुट
[3,4,5,2,1,7,3,4,7], 3
आउटपुट
11