Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมค้นหาความยาวของลำดับย่อยแอนนาแกรมที่ยาวที่สุดใน Python


สมมติว่าเรามีสตริงตัวพิมพ์เล็ก 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