কম্পিউটার

পাইথনে অ-ভাগ করা শব্দের সর্বাধিক দৈর্ঘ্য খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন আমাদের কাছে শব্দ বলা ছোট হাতের বর্ণানুক্রমিক স্ট্রিংগুলির একটি তালিকা রয়েছে, আমাদেরকে দুটি স্বতন্ত্র শব্দের দৈর্ঘ্যের সর্বাধিক যোগফল খুঁজে বের করতে হবে যেগুলি একটি সাধারণ অক্ষর ভাগ করে না। সুতরাং, যদি ইনপুটটি শব্দের মতো হয় =["abcd", "mno ", "abdcmno", "amno"], তাহলে আউটপুট হবে 7, যেহেতু শব্দগুলো কোনো সাধারণ অক্ষর ভাগ করে না ["abcd", "mno"], মোট দৈর্ঘ্য 7।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি ফাংশন চিহ্ন () সংজ্ঞায়িত করুন। এটি শব্দ গ্রহণ করবে
  • মান :=0
  • শব্দের প্রতিটি c-এর জন্য, করুন
    • মান :=মান OR (2^(c এর ASCII - 'a' এর ASCII))
  • রিটার্ন মান
  • মূল পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন
  • স্বাক্ষর :=প্রতিটি x শব্দের জন্য চিহ্ন(x) সহ একটি তালিকা
  • উত্তর :=0
  • আমি 0 থেকে শব্দের আকারের মধ্যে,
      করুন
    • j রেঞ্জ i + 1 থেকে শব্দের আকারের জন্য, করুন
      • যদি স্বাক্ষর[i] এবং স্বাক্ষর[j] 0 এর মত হয়, তাহলে
        • উত্তর :=সর্বাধিক উত্তর এবং শব্দের আকার[i] + শব্দের আকার[j]
  • উত্তর ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

class Solution:
   def sign(self, word):
      value = 0
      for c in word:
         value = value | (1 << (ord(c) - 97))
      return value
   def solve(self, words):
      signature = [self.sign(x) for x in words]
      ans = 0
      for i in range(len(words)):
         for j in range(i + 1, len(words)):
            if signature[i] & signature[j] == 0:
               ans = max(ans, len(words[i]) + len(words[j]))
      return ans
ob = Solution()
words = ["abcd", "mno", "abdcmno", "amno"]
print(ob.solve(words))

ইনপুট

["abcd", "mno", "abdcmno", "amno"]

আউটপুট

7

  1. পাইথনে দীর্ঘতম ম্যাট্রিক্স পাথের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে একই দৈর্ঘ্যের k ফিতার সর্বাধিক দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে সর্বোচ্চ বিল্ডিং উচ্চতা খুঁজে বের করার প্রোগ্রাম

  4. পাইথন প্রোগ্রাম সর্বোচ্চ তিনটি সংখ্যা খুঁজে বের করতে