मान लीजिए हमारे पास एक स्ट्रिंग है; हमें उस स्ट्रिंग से सभी पैलिंड्रोमिक सब-स्ट्रिंग्स ढूंढने हैं। यहां aa और aa को दो सब-स्ट्रिंग्स माना जाता है, एक नहीं।
तो, यदि इनपुट redivider जैसा है, तो आउटपुट ['r', 'e', 'd', 'i', 'v', 'ivi', 'divid', 'edivide', 'redivider', 'i', 'd', 'e', 'r'] होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- v := एक नई लिस्ट
- pos := 0.0
- जब pos < s का आकार, करें
- rad := pos - (pos का इंटीजर भाग)
- जब (pos + rad) < s का आकार और (pos - rad) >= 0 और (s[pos - rad का इंटीजर] == s[pos + rad का इंटीजर]), करें
- v के अंत में s[pos - rad के इंटीजर से pos + rad + 1 के इंटीजर तक] इन्सर्ट करें
- rad := rad + 1
- pos := pos + 0.5
- v लौटाएं
उदाहरण कोड
बेहतर समझ के लिए निम्नलिखित इम्प्लीमेंटेशन देखें:
def get_all_pal_sub(s):
v = []
pos = 0.0
while pos < len(s):
rad = pos - int(pos)
while (pos + rad) < len(s) and (pos - rad) >= 0 and (s[int(pos - rad)] == s[int(pos + rad)]):
v.append(s[int(pos - rad): int(pos + rad + 1)])
rad += 1
pos += 0.5
return v
v = get_all_pal_sub("redivider")
print(len(v))
print(v)
इनपुट
"redivider"
आउटपुट
13 ['r', 'e', 'd', 'i', 'v', 'ivi', 'divid', 'edivide', 'redivider', 'i', 'd', 'e', 'r']