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

पायथन में सिंगल रोटेशन के बाद सबसे लंबे पैलिंड्रोमिक सबस्ट्रिंग की लंबाई खोजने का प्रोग्राम


मान लीजिए हमारे पास एक स्ट्रिंग s है, जिसे हम किसी भी बिंदु पर ठीक एक बार रोटेट कर सकते हैं। हमें उस सबसे लंबे पैलिंड्रोमिक सबस्ट्रिंग की लंबाई ढूंढनी है जो इस ऑपरेशन से प्राप्त हो सकती है।

उदाहरण के लिए, यदि इनपुट s = "elklev" है, तो आउटपुट 5 होगा, क्योंकि हम "el" और "klev" के बीच रोटेट करके "levelk" प्राप्त कर सकते हैं। यहां सबसे लंबा पैलिंड्रोमिक सबस्ट्रिंग "level" है जिसकी लंबाई 5 है।

समाधान दृष्टिकोण

इस समस्या को हल करने के लिए हम स्ट्रिंग को दो बार जोड़कर सभी संभावित रोटेशन की जांच करेंगे:

  • s2 := s को दो बार जोड़ें (s + s)
  • max_len := 0
  • x को 0 से s के आकार - 1 तक लूप चलाएं:
    • y को 0 से s के आकार तक लूप चलाएं:
      • temp := s2[x से x + y तक का सबस्ट्रिंग]
      • यदि temp पैलिंड्रोम है और इसकी लंबाई max_len से अधिक है, तो max_len अपडेट करें
  • max_len लौटाएं

पायथन कार्यान्वयन

class Solution:
    def solve(self, s):
        s2 = 2 * s
        max_len = 0
        for x in range(len(s)):
            for y in range(len(s) + 1):
                temp = s2[x : x + y]
                if temp == temp[::-1] and len(temp) > max_len:
                    max_len = len(temp)
        return max_len

ob = Solution()
s = "elklev"
print(ob.solve(s))

इनपुट

"elklev"

आउटपुट

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

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

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

    मान लीजिए हमारे पास दो लोअरकेस स्ट्रिंग्स S और T हैं, हमें सबसे लंबी एनाग्राम उप-अनुक्रम की लंबाई ढूंढनी है। उदाहरण के लिए, यदि इनपुट S = helloworld, T = hellorld है, तो आउटपुट 8 होगा। इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे: c := एक नया मैप, d := एक नया मैप। i को 0 से len(a) - 1 तक लूप म

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

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