Giả sử chúng ta có hai chuỗi chữ thường S và T, chúng ta phải tìm độ dài của chuỗi con dài nhất.
Vì vậy, nếu đầu vào là S ="helloworld", T ="hellorld", thì đầu ra sẽ là 8
-
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
c:=a new map, d:=a new map
-
đối với tôi trong phạm vi từ 0 đến kích thước của a, do
-
nếu a [i] trong c thì
-
c [a [i]]:=c [a [i]] + 1
-
-
nếu không,
-
c [a [i]]:=1
-
-
-
đối với tôi trong phạm vi từ 0 đến kích thước của b, thực hiện
-
nếu b [i] trong d, thì
-
d [b [i]]:=d [b [i]] + 1
-
-
nếu không,
-
d [b [i]]:=1
-
-
-
res:=0
-
đối với mỗi ch trong c, thực hiện
-
nếu d [ch]> 0 thì
-
res:=res + tối thiểu của c [ch] và d [ch]
-
-
-
trả lại res
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
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)) Đầu vào
S = "helloworld", T = "hellorld"
Đầu ra
1