मान लीजिए कि हमारे पास एक स्ट्रिंग s है, जिसे हम किसी भी बिंदु पर ठीक एक बार घुमा सकते हैं। हमें इस ऑपरेशन को करने से प्राप्त होने वाले सबसे लंबे पैलिंड्रोमिक सबस्ट्रिंग की लंबाई का पता लगाना होगा।
इसलिए, यदि इनपुट s ="elklev" जैसा है, तो आउटपुट 7 होगा, क्योंकि हम "लेवल" प्राप्त करने के लिए "el" और "klev" के बीच घूम सकते हैं। तो यहां सबसे लंबी पैलिनफ्रॉमिक सबस्ट्रिंग लंबाई 5 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
s2 :=दो बार संयोजित करें
-
max_len :=0
-
x के लिए 0 से लेकर s − 1 के आकार तक के लिए करें
-
y के लिए 0 से लेकर s के आकार तक, करें
-
अस्थायी:=s2 [सूचकांक x से x + y तक]
-
अगर टेम्परेचर पैलिंड्रोम है और टेंप का साइज> मैक्स_लेन है, तो
-
max_len :=तापमान का आकार
-
-
-
-
वापसी max_len
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, s): s2 = 2 * s max_len = 0 for x in range(len(s)): for y in range(len(s) + 1): temp = s2[x : x + y] if temp == temp[::−1] and len(temp) > max_len: max_len = len(temp) return max_len ob = Solution() s = "elklev" print(ob.solve(s))
इनपुट
"elklev"
आउटपुट
5