কম্পিউটার টিউটোরিয়াল

পাইথনে নন-শেয়ারিং ওয়ার্ডসের সর্বোচ্চ দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম


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

এটি সমাধান করতে আমরা নিম্নলিখিত ধাপগুলি অনুসরণ করব:

  • একটি sign() ফাংশন সংজ্ঞায়িত করুন। এটি word গ্রহণ করবে।
  • value := 0
  • word-এ থাকা প্রতিটি c-এর জন্য: value := value OR (2^(ASCII of c - ASCII of 'a'))
  • value ফেরত দিন
  • মূল মেথড থেকে: signature := [sign(x) for x in words], ans := 0। i কে ০ থেকে words-এর আকার পর্যন্ত লুপ চালান: j কে i+1 থেকে words-এর আকার পর্যন্ত লুপ চালান: যদি signature[i] & signature[j] == 0, ans := max(ans, len(words[i]) + len(words[j]))। ans ফেরত দিন।

বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশনটি দেখুন:

উদাহরণ

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. Python-এ সর্বোচ্চ বিল্ডিং হাইট বের করার প্রোগ্রাম

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