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

यह जाँचने के लिए प्रोग्राम कि क्या अजगर में अधिकांश k वर्णों को हटाने के बाद पैलिंड्रोम बनाया जा सकता है या नहीं

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

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

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

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

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

  1. यह जाँचने के लिए प्रोग्राम कि क्या किसी पेड़ का क्रमागत क्रम पाइथॉन में पैलिंड्रोम है या नहीं

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

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

    एक खाली सूची दी। हमारा काम मौसम की जांच करना है कि यह सूची खाली है या नहीं। यहाँ हम जाँच करते हैं जाँच का एक निहित तरीका है। एल्गोरिदम Step 1: We take an empty list. Step 2: then check if list is empty then return 1 otherwise 0. उदाहरण कोड # Python code to check for empty list def checklist(A):