Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में सबसे लंबे समय तक भयानक सबस्ट्रिंग खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक संख्यात्मक स्ट्रिंग है। जैसा कि हम जानते हैं कि एक भयानक सबस्ट्रिंग s का एक गैर-रिक्त विकल्प है, जैसे कि हम इसे पैलिंड्रोम बनाने के लिए कितनी भी संख्या में स्वैप कर सकते हैं। हमें s की अधिकतम लंबाई के भयानक सबस्ट्रिंग की लंबाई का पता लगाना है।

इसलिए, यदि इनपुट s ="4353526" जैसा है, तो आउटपुट 5 होगा क्योंकि "35352" सबसे लंबा भयानक सबस्ट्रिंग है। हम "35253" पैलिंड्रोम बना सकते हैं।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • n :=0

  • pos_map :=एक कुंजी 0 और संबंधित मान वाला नक्शा s के आकार का होता है

  • max_len :=1

  • मैं के लिए s - 1 से 0 के श्रेणी आकार में, 1 से घटाएं

    • n :=n XOR (2^s[i])

    • अगर n pos_map में मौजूद है, तो

      • max_len:=max_len और pos_map की अधिकतम[n]-i

    • j के लिए 0 से 9 की सीमा में, करें

      • एम:=एन एक्सओआर 2^जे

      • अगर m pos_map में है, तो

        • max_len :=max_len और pos_map की अधिकतम[m]-i

    • अगर n pos_map में नहीं है, तो

      • pos_map[n] :=i

  • वापसी max_len

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें

def solve(s):
   n = 0
   pos_map = {0:len(s)}

   max_len = 1

   for i in range(len(s)-1, -1, -1):
      n = n ^ (1 << int(s[i]))

      if n in pos_map:
         max_len = max(max_len, pos_map[n]-i)

      for j in range(10):
         m = n ^ (1 << j)
         if m in pos_map:
            max_len = max(max_len, pos_map[m]-i)

      if n not in pos_map:
         pos_map[n] = i

   return max_len

s = "4353526"
print(solve(s))

इनपुट

"4353526"

आउटपुट

5

  1. पायथन में लगातार सबसे लंबे अनुक्रम की लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास संख्याओं की एक क्रमबद्ध सरणी है, हमें लगातार तत्वों के सबसे लंबे अनुक्रम की लंबाई का पता लगाना है। इसलिए, यदि इनपुट अंकों की तरह है =[70, 7, 50, 4, 6, 5], तो आउटपुट 4 होगा, क्योंकि लगातार तत्वों का सबसे लंबा अनुक्रम [4, 5, 6, 7] है। इसलिए हम इसकी लंबाई लौटाते हैं:4. इसे हल क

  1. पायथन में सबसे लंबे विपर्यय क्रम की लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास दो लोअरकेस स्ट्रिंग्स S और T हैं, तो हमें सबसे लंबे एनाग्राम अनुक्रम की लंबाई ज्ञात करनी होगी। इसलिए, यदि इनपुट S =helloworld, T =hellolorld जैसा है, तो आउटपुट 8 होगा इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - सी:=एक नया नक्शा, डी:=एक नया नक्शा मैं के लिए 0 से

  1. पायथन में सबसे लंबा पालिंड्रोमिक सबस्ट्रिंग

    मान लीजिए कि हमारे पास एक स्ट्रिंग S है। हमें S में सबसे लंबी पैलिंड्रोमिक सबस्ट्रिंग ढूंढनी है। हम मान रहे हैं कि स्ट्रिंग S की लंबाई 1000 है। इसलिए यदि स्ट्रिंग BABAC है , तो सबसे लंबा पैलिंड्रोमिक सबस्ट्रिंग “BAB” है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे स्ट्रिंग की लंबाई के समान क्रम