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

โปรแกรมค้นหาจำนวนการดำเนินการขั้นต่ำที่จำเป็นในการสร้างสตริงย่อยของสตริงอื่นใน Python


สมมติว่าเรามีสองสตริง s และ t เราต้องหาจำนวนการดำเนินการขั้นต่ำที่จำเป็นสำหรับ s เพื่อสร้าง t เป็นสตริงย่อยของ s ในการดำเนินการแต่ละครั้ง เราสามารถเลือกตำแหน่งใดก็ได้ใน s และเปลี่ยนอักขระในตำแหน่งนั้นเป็นอักขระอื่น

ดังนั้น หากอินพุตเป็น s ="abbpqr", t ="bbxy" ผลลัพธ์จะเป็น 2 เนื่องจากเราสามารถนำสตริงย่อย "bbpq" และเปลี่ยน 'p' เป็น 'x' และ 'q' เป็น ' ครับ

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • k :=ขนาดของ t, n :=ขนาดของ s
  • ตอบ :=10^10
  • สำหรับฉันในช่วง 0 ถึง n - k ทำ
    • ss :=สตริงย่อยของ s[จากดัชนี i ถึง i+k-1]
    • ans :=ขั้นต่ำของ ans และจำนวนอักขระที่ไม่ตรงกันของ s และ t
  • คืนสินค้า

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution:
   def solve(self, s, t):
      k, n = len(t), len(s)
      ans = 10**10
      for i in range(n - k + 1):
         ss = s[i:i+k]
         ans = min(ans, sum(ss[j]!=t[j] for j in range(k)))
      return ans
ob = Solution()
print(ob.solve("abbpqr", "bbxy"))

อินพุต

"abbpqr", "bbxy"

ผลลัพธ์

2