मान लीजिए हमारे पास एक स्ट्रिंग है; हमें उस स्ट्रिंग से सभी पैलिंड्रोमिक सब-स्ट्रिंग्स को ढूंढना है। यहां आ और आ को दो उप-स्ट्रिंग माना जाता है, एक नहीं।
इसलिए, यदि इनपुट रिडिवाइडर की तरह है, तो आउटपुट ['r', 'e', 'd', 'i', 'v', 'ivi', 'divid', 'edivide', 'redivider' होगा। , 'i', 'd', 'e', 'r']
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- v :=एक नई सूची
- स्थिति:=0.0
- जबकि स्थिति
- rad :=pos - (पूर्णांक के रूप में स्थिति)
- जबकि (pos + rad)
=0 और (s [(pos - rad) का पूर्णांक] s [(pos + rad) का पूर्णांक] के समान है), करते हैं- v के अंत में s[(pos - rad) के सूचकांक पूर्णांक से (pos + rad + 1)] के पूर्णांक में डालें
- रेड:=रेड + 1
- स्थिति:=स्थिति + 0.5
उदाहरण कोड
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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']