मान लीजिए कि हमारे पास दो स्ट्रिंग्स s और t हैं, हमें यह जांचना होगा कि s में किसी वर्ण की घटनाएँ एकाधिक हैं या t में एक फ़ैक्टर है।
इसलिए, यदि इनपुट s ="xxyzzw" t ="yyyxxxxzz" जैसा है, तो आउटपुट सही होगा क्योंकि 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] से विभाज्य है, तो
- अगले पुनरावृत्ति के लिए जाएं
- अन्यथा,
- झूठी वापसी
- यदि ch t_freq में नहीं है, तो
- सही लौटें
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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