কম্পিউটার টিউটোরিয়াল

পাইথনে দেওয়া স্ট্রিংয়ের সব প্যালিনড্রোমিক সাব-স্ট্রিং খুঁজে বের করা - সেট 2

मान लीजिए हमारे पास एक स्ट्रिंग है। हमें उस स्ट्रिंग से सभी पैलिंड्रोमिक सब-स्ट्रिंग ढूंढने हैं। यहां 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']
  1. দেওয়া স্ট্রিংয়ের সকল পারমিউটেশন প্রিন্ট করার পাইথন প্রোগ্রাম

  2. পাইথনে দেওয়া স্ট্রিং থেকে সব ডুপ্লিকেট সরিয়ে ফেলার প্রোগ্রাম

  3. পাইথনে Regex ব্যবহার করে স্ট্রিংয়ে 10+1 প্যাটার্নের সব_match বের করার প্রোগ্রাম

  4. পাইথনে স্ট্রিংয়ের সকল সম্ভাব্য পারমুটেশন বের করা