สมมติว่าเรามีสตริงตัวพิมพ์เล็ก S และ T สองตัว เราต้องหาความยาวของลำดับย่อยของ longestanagram
ดังนั้น หากอินพุตเป็น S ="helloworld", T ="hellorld" ผลลัพธ์จะเป็น 8
-
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
c :=แผนที่ใหม่ d :=แผนที่ใหม่
-
สำหรับฉันอยู่ในช่วง 0 ถึงขนาด a ทำ
-
ถ้า 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
-
-
-
res :=0
-
สำหรับแต่ละ ch ใน c ทำ
-
ถ้า 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