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

পাইথনে স্পেশাল-ইকুিভ্যালেন্ট স্ট্রিং গ্রুপ

মান লেই একটি স্ট্রিং অ্যারে A আছে। S-এ একটি মুভ হলো S-এর যেকোনো দুটি ইভেন ইন্ডেক্সড ক্যারেক্টার সওয়াপ করা, অথবা যেকোনো দুটি অড ইন্ডেক্সড ক্যারেক্টার সওয়াপ করা।

এখন, দুটি স্ট্রিং S এবং T স্পেশাল-ইকুিভ্যালেন্ট যদি S-এ যেকোনো সংখ্যক মুভ করার পর S == T হয়। যেমন, S = "zzxy" এবং T = "xyzz" স্পেশাল-ইকুিভ্যালেন্ট কারণ "zzxy" থেকে "xzzy" (S[0] এবং S[2] সওয়াপ), তারপর "xyzz" (S[1] এবং S[3] সওয়াপ) করতে পারি।

এখন, A-র থেকে স্পেশাল-ইকুিভ্যালেন্ট স্ট্রিং গ্রুপ হলো A-এর একটি নন-ইম্পটি সাবসেট যাতে −

গ্রুপের প্রতিটি স্ট্রিং জোড়া স্পেশাল ইকুিভ্যালেন্ট, এবং গ্রুপটি সর্বাধিক সাইজের (অর্থাৎ এমন কোনো স্ট্রিং S গ্রুপে নেই যেটা গ্রুপের সব স্ট্রিংসহ স্পেশাল ইকুিভ্যালেন্ট)। আমাদের A-র থেকে স্পেশাল-ইকুিভ্যালেন্ট স্ট্রিং গ্রুপের সংখ্যা বের করতে হবে।

সেজন্য, যদি ইনপুট হয় ["abcd","cdab","cbad","xyzz","zzxy","zzyx"], তবে আউটপুট হবে ৩, কারণ একটি গ্রুপ ["abcd", "cdab", "cbad"], যেহেতু সব পেয়ারওয়াইজ স্পেশাল ইকুিভ্যালেন্ট, এবং অন্য স্ট্রিংগুলো এই গ্রুপের সব স্ট্রিংসহ পেয়ারওয়াইজ স্পেশাল ইকুিভ্যালেন্ট নয়। আরো দুটি গ্রুপ আছে: ["xyzz", "zzxy"] এবং ["zzyx"]।

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

  • codes := একটি নতুন সেট
  • প্রতিটি word A-তে,
    • code := ইভেন পজিশন ইন্ডেক্সের স্ট্রিং সর্ট করা + অড পজিশন ইন্ডেক্সের স্ট্রিং সর্ট করা, দুটো কনক্যাটেনেট
    • code codes-এ অ্যাড
  • codes-এর সাইজ রিটার্ন

বেস্টার বোঝার জন্য নিচের ইম্প্লিমেন্টেশন দেখুন −

উদাহরণ

class Solution:
    def numSpecialEquivGroups(self, A):
        codes = set()
        for word in A:
            code = ''.join(sorted(word[::2])) + ''.join(sorted(word[1::2]))
            codes.add(code)
        return len(codes)

ob = Solution()
print(ob.numSpecialEquivGroups(["abcd","cdab","cbad","xyzz","zzxy","zzyx"]))

ইনপুট

["abcd","cdab","cbad","xyzz","zzxy","zzyx"]

আউটপুট

3
  1. পাইথনে স্ট্রিংর গ্রেটেস্ট কমন ডিভাইজর (Greatest Common Divisor of Strings in Python)

  2. পাইথনের FuzzyWuzzy লাইব্রেরি দিয়ে ফাজি স্ট্রিং ম্যাচিং

  3. পাইথনে স্ট্রিং-এ % অপারেটর কী করে

  4. পাইথনে স্ট্রিংয়ের লিস্ট সর্ট করা