কম্পিউটার

পাইথনে বিশেষ-সমতুল্য স্ট্রিংগুলির গোষ্ঠী


ধরুন আমাদের কাছে A নামক স্ট্রিংগুলির একটি অ্যারে আছে। S-এর দিকে এক সরে গেলে S-এর যেকোনো দুটি জোড় সূচীকৃত অক্ষর বা S-এর যেকোনো দুটি বিজোড় সূচীকৃত অক্ষর অদলবদল করা হয়।

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

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

গ্রুপের প্রতিটি জোড়ায় স্ট্রিং বিশেষ সমতুল্য, এবং গ্রুপটি সবচেয়ে বড় আকারের সম্ভাব্য (কোনও স্ট্রিং S গ্রুপে নেই যেমন S সেই গ্রুপের প্রতিটি স্ট্রিংয়ের জন্য বিশেষ সমতুল্য) আমাদের সংখ্যা খুঁজে বের করতে হবে A.

থেকে বিশেষ-সমতুল্য স্ট্রিংগুলির গ্রুপ

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

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

  • কোড :=একটি নতুন সেট
  • A-এর প্রতিটি শব্দের জন্য করুন
    • কোড :=জোড় অবস্থান সূচক সহ দুটি স্ট্রিং এবং বিজোড় অবস্থান সূচক সহ আরেকটি স্ট্রিং সংযুক্ত করুন
    • কোডগুলিতে কোড যোগ করুন
  • কোডের রিটার্ন সাইজ

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

উদাহরণ

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","z
zyx"]))

ইনপুট

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

আউটপুট

3

  1. পাইথনে স্ট্রিংগুলির সর্বশ্রেষ্ঠ সাধারণ বিভাজক

  2. ফাজিউজি পাইথন লাইব্রেরি

  3. পাইথনে স্ট্রিংগুলি % কি করে?

  4. পাইথনে স্ট্রিংগুলির তালিকা কীভাবে বাছাই করবেন?