मान लीजिए हमारे पास एक स्ट्रिंग है। हमें उस स्ट्रिंग से सभी पैलिंड्रोमिक सब-स्ट्रिंग ढूंढने हैं। यहां 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 का पूर्णांक]):
- s[pos - rad के पूर्णांक से pos + rad + 1 के पूर्णांक तक] को v के अंत में डालें
- 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']