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

পাইথনে ঠিক k সংখ্যক আলাদা ওয়ার্ডসহ সাবলিস্টের সংখ্যা গণনা করার প্রোগ্রাম

একটি ওয়ার্ড লিস্ট words এবং একটি মান k দেওয়া আছে। এমন সাবলিস্ট (কন্টিগুয়াস) কতটি আছে যাতে সেটিতে ঠিক kটি আলাদা ওয়ার্ড থাকে, সেটি বের করতে হবে।

উদাহরণস্বরূপ, words = ["Kolkata","Delhi","Delhi","Kolkata"], k=2 হলে আউটপুট ৫।

সমাধানের পদ্ধতি (স্লাইডিং উইন্ডো + atMost(k) - atMost(k-1))

সাবলিস্ট কাউন্ট করার লজিক পिछলার count(K) ফাংশনের মতোই, শুধু এখানে ইন্টিজার বদলে স্ট্রিং/ওয়ার্ড।

পাইথন কোড উদাহরণ

class Solution:
    def solve(self, words, k):
        return self.work(words, k) - self.work(words, k - 1)
    def work(self, words, k):
        n = len(words)
        if k == 0:
            return 0
        cnt = {}
        ans = 0
        l = 0
        for r in range(n):
            word = words[r]
            if word not in cnt:
                cnt[word] = 0
            cnt[word] += 1
            while len(cnt) > k:
                cnt[words[l]] -= 1
                if cnt[words[l]] == 0:
                    del cnt[words[l]]
                l += 1
            ans += r - l + 1
        return ans

ob = Solution()
words = ["Kolkata", "Delhi", "Delhi", "Kolkata"]
k = 2
print(ob.solve(words, k))

ইনপুট

["Kolkata", "Delhi", "Delhi", "Kolkata"], 2

আউটপুট

5
  1. পাইথনে বক্স চেইন থেকে সর্বাধিক দৈর্ঘ্যের চেইন বের করার প্রোগ্রাম

  2. পাইথনে একই ক্যারেক্টার ধারণকারী সাবস্ট্রিংর মোট সংখ্যা খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে প্রাইম নম্বর খুঁজে বের করার বিভিন্ন পদ্ধতি

  4. পাইথন প্রোগ্রামে প্রাইম নাম্বার খুঁজে বের করার বিভিন্ন পদ্ধতির বিশ্লেষণ