কম্পিউটার

একটি স্ট্রিং-এ অক্ষরের ফ্রিকোয়েন্সি একটি ফ্যাক্টর বা পাইথনের অন্য স্ট্রিং-এ একই অক্ষরের কম্পাঙ্কের একাধিক কিনা তা পরীক্ষা করুন


ধরুন আমাদের দুটি স্ট্রিং s এবং t আছে, আমাদের পরীক্ষা করতে হবে s-এ একটি অক্ষরের উপস্থিতি একাধিক নাকি t-এ একটি ফ্যাক্টর৷

সুতরাং, যদি ইনপুটটি s ="xxyzzw" t ="yyyxxxxzz" এর মত হয়, তাহলে আউটপুটটি True হবে কারণ s-এ x-এর ফ্রিকোয়েন্সি 2, এবং t-এ 4, s y-এ শুধুমাত্র একবার উপস্থিত, কিন্তু t-এ তিনটি y, s এবং t-এ একই সংখ্যক z আছে এবং s-এ এক w আছে কিন্তু t-এ নয়।

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

  • s_freq :=s এবং তাদের ফ্রিকোয়েন্সিগুলির সমস্ত অক্ষর সহ একটি মানচিত্র
  • t_freq :=t-এ সমস্ত অক্ষর এবং তাদের ফ্রিকোয়েন্সি সহ একটি মানচিত্র
  • s_freq-এ প্রতিটি ch-এর জন্য, করুন
    • যদি ch t_freq-এ না হয়, তাহলে
      • পরবর্তী পুনরাবৃত্তির জন্য যান
    • যদি t_freq[ch] s_freq[ch] দ্বারা বিভাজ্য হয় অথবা s_freq[ch] t_freq[ch] দ্বারা বিভাজ্য হয়, তাহলে
      • পরবর্তী পুনরাবৃত্তির জন্য যান
    • অন্যথায়,
      • মিথ্যে ফেরত দিন
  • সত্য ফেরান

উদাহরণ

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

from collections import defaultdict
def solve(s, t):
   s_freq = defaultdict(int)
   t_freq = defaultdict(int)
   for i in range(0, len(s)):
      s_freq[s[i]] += 1
   for i in range(0, len(t)):
      t_freq[t[i]] += 1
   for ch in s_freq:
      if ch not in t_freq:
         continue
      if t_freq[ch] % s_freq[ch] == 0 or s_freq[ch] % t_freq[ch] == 0:
         continue
      else:
         return False
   return True
s = "xxyzzw"
t = "yyyxxxxzz"
print(solve(s, t))

ইনপুট

"xxyzzw", "yyyxxxxzz"

আউটপুট

True

  1. পাইথনে DFA ব্যবহার করে 3-এর বাইনারি স্ট্রিং মাল্টিপল আছে কিনা তা পরীক্ষা করুন

  2. Python - একটি ভেরিয়েবল স্ট্রিং কিনা তা পরীক্ষা করুন

  3. পাইথনের একটি স্ট্রিং-এ প্রথম অনন্য অক্ষর

  4. একটি স্ট্রিং একটি অক্ষর পাইথনে একটি অক্ষর কিনা তা কিভাবে পরীক্ষা করবেন?