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

পাইথনে K-দৈর্ঘ্যের রিপিট না হওয়া সাবস্ট্রিং খুঁজে বের করা

মনে করুন একটি স্ট্রিং S আছে, আমাদের দৈর্ঘ্য K-এর সাবস্ট্রিংগুলো খুঁজে বের করতে হবে যেখানে কোনো ক্যারেক্টার রিপিট হয় না। যেমন S = "heyfriendshowareyou" এবং K = 5 হলে আউটপুট হবে ১৫, কারণ স্ট্রিংগুলো হল [heyfr, eyfri, yfrie, frien, riend, iends, endsh, ndsho, dshow, showa, howar, oware, warey, areyo, reyou]

এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব:

  • একটি খালি ম্যাপ m, left := 0, right := -1 এবং ans := 0 তৈরি করুন
  • যখন right < স্ট্রিং দৈর্ঘ্য - 1
    • যদি right - left + 1 = k, তবে
      • ans ১ বাড়ান
      • m[str[left]] ১ কমান
      • left ১ বাড়ান
      • পরবর্তী ইটারেশনে যান
    • যদি str[right + 1] m-এ না থাকে, তবে
      • m[str[right + 1]] := 1 সেট করুন
      • right ১ বাড়ান
    • অন্যथा যদি m[str[right + 1]] 0 হয়, তবে
      • m[str[right + 1]] ১ বাড়ান
      • right ১ বাড়ান
    • অন্যথায়
      • m[str[left]] ১ কমান
      • left := left + 1
  • যদি right - left + 1 = k, তবে ans ১ বাড়ান
  • ans রিটার্ন করুন

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন ভালো বুঝতে:

class Solution(object):
    def numKLenSubstrNoRepeats(self, S, K):
        m = {}
        left = 0
        right = -1
        ans = 0
        while right < len(S) - 1:
            if right - left + 1 == K:
                ans += 1
                m[S[left]] -= 1
                left += 1
                continue
            if S[right + 1] not in m:
                m[S[right + 1]] = 1
                right += 1
            elif not m[S[right + 1]]:
                m[S[right + 1]] += 1
                right += 1
            else:
                m[S[left]] -= 1
                left += 1
        if right - left + 1 == K:
            ans += 1
        return ans

ob1 = Solution()
print(ob1.numKLenSubstrNoRepeats("heyfriendshowareyou", 5))

ইনপুট

"heyfriendshowareyou" 5

আউটপুট

15

  1. পাইথন প্রোগ্রাম: স্ট্রিং-এ মিরর ক্যারেক্টার বের করা

  2. পাইথনে স্ট্রিংয়ের প্রথম পুনরাবৃত্ত শব্দ খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে দুটি স্ট্রিংয়ের অনসাধারণ ক্যারেক্টার কনক্যাটেনেট করার প্রোগ্রাম

  4. পাইথনে শুধু মাঙ্গলবারের ডেট কীভাবে পাবেন?