मान लीजिए कि हमारे पास दो लोअरकेस स्ट्रिंग्स S और T हैं, तो हमें सबसे लंबे एनाग्राम अनुक्रम की लंबाई ज्ञात करनी होगी।
इसलिए, यदि इनपुट S ="helloworld", T ="hellolorld" जैसा है, तो आउटपुट 8
होगा-
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
सी:=एक नया नक्शा, डी:=एक नया नक्शा
-
मैं के लिए 0 से ए के आकार की सीमा में, करो
-
अगर a[i] c में, तो
-
c[a[i]] :=c[a[i]] + 1
-
-
अन्यथा,
-
c[a[i]] :=1
-
-
-
मैं के लिए 0 से b के आकार की सीमा में, ऐसा करें
-
अगर b[i] d में, तो
-
d[b[i]] :=d[b[i]] + 1
-
-
अन्यथा,
-
d[b[i]] :=1
-
-
-
रेस :=0
-
c में प्रत्येक ch के लिए, करें
-
अगर d[ch]> 0, तो
-
res :=res + न्यूनतम c[ch] और d[ch]
-
-
-
रिटर्न रेस
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution:
def solve(self, a, b):
c, d = {}, {}
for i in range(len(a)):
if a[i] in c:
c[a[i]] += 1
else:
c[a[i]] = 1
for i in range(len(b)):
if b[i] in d:
d[b[i]] += 1
else:
d[b[i]] = 1
res = 0
for ch in c:
if d.get(ch, 0) > 0:
res += min(c[ch], d[ch])
return res
ob = Solution()
S = "helloworld"
T = "hellorld"
print(ob.solve(S, T)) इनपुट
S = "helloworld", T = "hellorld"
आउटपुट
1