मान लीजिए हमारे पास दो लोअरकेस स्ट्रिंग्स S और T हैं, हमें सबसे लंबी एनाग्राम उप-अनुक्रम की लंबाई ढूंढनी है।
उदाहरण के लिए, यदि इनपुट S = "helloworld", T = "hellorld" है, तो आउटपुट 8 होगा।
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
c := एक नया मैप,d := एक नया मैप।iको 0 सेlen(a) - 1तक लूप में चलाएं:यदि
a[i]cमें है, तोc[a[i]] := c[a[i]] + 1।अन्यथा,
c[a[i]] := 1।
iको 0 सेlen(b) - 1तक लूप में चलाएं:यदि
b[i]dमें है, तोd[b[i]] := d[b[i]] + 1।अन्यथा,
d[b[i]] := 1।
res := 0।प्रत्येक
chके लिएcमें:यदि
d[ch] > 0, तोres := res + min(c[ch], d[ch])।
resलौटाएं।
उदाहरण
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