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

जांचें कि पायथन में दी गई स्थिति के अनुसार दो तार समकक्ष हैं या नहीं

मान लीजिए कि हमारे पास समान आकार के दो तार s और t हैं। हमें जांचना है कि s और t समतुल्य हैं या नहीं। जाँच करने के लिए कुछ शर्तें हैं:

  • वे दोनों बराबर हैं। या,
  • यदि हम s को समान आकार के दो सन्निहित सबस्ट्रिंग में विभाजित करते हैं और सबस्ट्रिंग s1 और s2 हैं और t को समान, s को t1 और t2 में विभाजित करते हैं, तो निम्न में से एक मान्य होना चाहिए:
    • s1 पुनरावर्ती रूप से t1 के समतुल्य है और s2 पुनरावर्ती रूप से t2 के समतुल्य है
    • s1 पुनरावर्ती रूप से t2 के समतुल्य है और s2 पुनरावर्ती रूप से t1 के समतुल्य है

इसलिए, यदि इनपुट s ="ppqp" t ="pqpp" जैसा है, तो आउटपुट सही होगा जैसे कि हम s और t को दो भागों s1 ="pp", s2 ="qp" और t1 ="pq" में विभाजित करते हैं। ", t2 ="pp", यहाँ s1 =t2 और यदि हम s2 और t1 को दो भागों में विभाजित करते हैं s21 ="q", s22 ="p", t11 ="p", t12 ="q", यहाँ भी s21 =t12 और s22 =t11, इसलिए वे पुनरावर्ती समकक्ष हैं।

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

  • उपयोग() फ़ंक्शन को परिभाषित करें। इसमें लगेगा
  • यदि s का आकार विषम है, तो
    • वापसी
  • बाएं:=उपयोग (ओं का बायां आधा भाग)
  • दाएं:=उपयोग (ओं का दायां आधा भाग)
  • रिटर्न न्‍यूनतम (बाएं समवर्ती दाएं), (दाएं समवर्ती बाएं)
  • मुख्य विधि से सही रिटर्न जब उपयोग (ओं) के समान है (टी) अन्यथा गलत है

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

उदाहरण कोड

def util(s):
   if len(s) & 1 != 0:
      return s
 
   left = util(s[0:int(len(s) / 2)])
   right = util(s[int(len(s) / 2):len(s)])
 
   return min(left + right, right + left)
 
def solve(s,t):
   return util(s) == util(t)

s = "ppqp"
t = "pqpp"
print(solve(s, t))

इनपुट

"ppqp", "pqpp"

आउटपुट

True

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

    मान लीजिए हमारे पास दो बाइनरी ट्री हैं; हमें यह जांचना होगा कि दोनों पेड़ों में बाएं से दाएं पत्तों का क्रम समान है या नहीं। तो, अगर इनपुट पसंद है तब आउटपुट सही होगा क्योंकि दोनों पेड़ों के लिए अनुक्रम [2, 6] है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे: c :=एक नई सूची एक फ़ंक्शन को परिभ

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

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

  1. पायथन में दिया गया ग्राफ द्विदलीय है या नहीं, यह जांचने के लिए कार्यक्रम पायथन में दिया गया ग्राफ द्विदलीय है या नहीं, यह जांचने के लिए कार्यक्रम

    मान लीजिए कि हमारे पास एक अप्रत्यक्ष ग्राफ है, हमें यह जांचना है कि ग्राफ द्विदलीय है या नहीं। जैसा कि हम जानते हैं कि एक ग्राफ द्विदलीय होता है जब हम ग्राफ के नोड्स को दो सेट ए और बी में विभाजित कर सकते हैं जैसे कि ग्राफ के प्रत्येक किनारे {यू, वी} में ए में एक नोड और बी में दूसरा नोड वी होता है।