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

Python में अधिकतम k कैरेक्टर हटाने के बाद पालिंड्रोम बन सकता है या नहीं, इसकी जांच करने का प्रोग्राम


मान लीजिए हमारे पास एक स्ट्रिंग s है, हमें जांचना है कि क्या हम अधिकतम k कैरेक्टर हटाने के बाद इस स्ट्रिंग को पालिंड्रोम बना सकते हैं या नहीं।

इसलिए, यदि इनपुट इस तरह है s = "lieuvrel", k = 4, तो आउटपुट True होगा, हम तीन कैरेक्टर हटाकर पालिंड्रोम "level" प्राप्त कर सकते हैं।

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

  • lcs() फ़ंक्शन परिभाषित करें। यह a, b लेगा
  • m := a का आकार, n := b का आकार
  • table := (m + 1) x (n + 1) आकार का मैट्रिक्स और 0 से भरें
  • i के लिए 1 से m तक रेंज में, करें
    • j के लिए 1 से n तक रेंज में, करें
      • यदि a[i - 1] b[j - 1] के समान है, तो
        • table[i, j] := 1 + table[i - 1, j - 1]
      • अन्यथा,
        • table[i, j] := table[i, j - 1] और table[i - 1, j] का अधिकतम
  • table[m, n] लौटाएं
  • मुख्य मेथड से निम्नलिखित करें:
  • सत्य लौटाएं जब (s का आकार - lcs(s, s का रिवर्स) <= k) अन्यथा असत्य

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

उदाहरण

class Solution:
    def solve(self, s, k):
        def lcs(a, b):
            m, n = len(a), len(b)
            table = [[0] * (n + 1) for _ in range(m + 1)]
            for i in range(1, m + 1):
                for j in range(1, n + 1):
                    if a[i - 1] == b[j - 1]:
                        table[i][j] = 1 + table[i - 1][j - 1]
                    else:
                        table[i][j] = max(table[i][j - 1], table[i - 1][j])
            return table[m][n]
        return len(s) - lcs(s, s[::-1]) <= k
ob = Solution()
s = "lieuvrel"
k = 4
print(ob.solve(s, k))

इनपुट

"lieuvrel", 4

आउटपुट

True
  1. Python में दो ट्री नोड्स को स्वैप करके बनाए जा सकते हैं या नहीं, इसकी जांच करने का प्रोग्राम Python में दो ट्री नोड्स को स्वैप करके बनाए जा सकते हैं या नहीं, इसकी जांच करने का प्रोग्राम

    मान लीजिए हमारे पास दो ट्री हैं, हमें यह जांचना है कि क्या हम पहले ट्री को दूसरे में किसी भी नोड के बाएं और दाएं सबट्री को कितनी भी बार स्वैप करके बदल सकते हैं। तो, यदि इनपुट इस तरह है तो आउटपुट True होगा। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे: que1 := root0 के साथ प्रारंभ एक कतार que2

  1. पायथन में ट्री के इनऑर्डर अनुक्रम के पैलिंड्रोम होने की जांच करने का प्रोग्राम पायथन में ट्री के इनऑर्डर अनुक्रम के पैलिंड्रोम होने की जांच करने का प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी ट्री है जहां प्रत्येक नोड में 0-9 से एक अंक होता है, हमें जांचना है कि इसका इन-ऑर्डर ट्रैवर्सल पैलिंड्रोम है या नहीं।इसलिए, यदि इनपुट इस तरह हैतो आउटपुट True होगा, क्योंकि इसका इनऑर्डर ट्रैवर्सल [2,6,10,6,2] है।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −यदि r

  1. - सूची खाली है या नहीं जांचने का पायथन प्रोग्राम

    समस्या विवरण एक खाली सूची दी गई है। हमारा कार्य जांचना है कि यह सूची खाली है या नहीं। यहां हम जांचने का एक निहित तरीका उपयोग करते हैं। एल्गोरिदम हम एक खाली सूची लेते हैं। फिर जांचें कि यदि सूची खाली है तो 1 लौटाएं अन्यथा 0। उदाहरण कोड # खाली सूची की जांच के लिए पायथन कोड def checklist(A): if