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

পাইথনে দুটি স্ট্রিং-এর ক্যারেক্টার ফ্রিকোয়েন্সি ফ্যাক্টর বা মাল্টিপল কিনা যাচাই করা

ধরি আমাদের দুটি স্ট্রিং s এবং t আছে। আমাদের যাচাই করতে হবে s-এ যেকোনো ক্যারেক্টারের ফ্রিকোয়েন্সি t-এ সেই ক্যারেক্টারের ফ্রিকোয়েন্সির ফ্যাক্টর বা মাল্টিপল কিনা।

উদাহরণস্বরূপ, s = "xxyzzw" এবং t = "yyyxxxxzz" হলে আউটপুট হবে True, কারণ: s-এ x-এর ফ্রিকোয়েন্সি ২, t-এ ৪ (২-এর মাল্টিপল); s-এ y-এর ফ্রিকোয়েন্সি ১, t-এ ৩ (১-এর মাল্টিপল); z উভয় জায়গায় একই; w শুধু s-এ আছে।

সমাধানের ধাপসমূহ

  • s_freq := s-এ থাকা সব ক্যারেক্টার ও ফ্রিকোয়েন্সির ম্যাপ
  • t_freq := t-এ থাকা সব ক্যারেক্টার ও ফ্রিকোয়েন্সির ম্যাপ
  • s_freq-এ থাকা প্রতিটি ক্যারেক্টার ch-এর জন্য:
    • যদি ch t_freq-এ না থাকে, তবে চালিয়ে যান
    • যদি t_freq[ch] % s_freq[ch] == 0 বা s_freq[ch] % t_freq[ch] == 0, তবে চালিয়ে যান
    • অন্যথায় false রিটার্ন করুন
  • true রিটার্ন করুন

উদাহরণ

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 ব্যবহার করে বাইনারি স্ট্রিং ৩ দিয়ে বিভাজ্য কিনা

  2. পাইথনে ভেরিয়েবল স্ট্রিং কিনা যাচাই করা

  3. পাইথনে স্ট্রিংয়ের প্রথম ইউনিক ক্যারেক্টার

  4. পাইথনে স্ট্রিং-এ কোনো ক্যারেক্টার অক্ষর কিনা চেক করা