สมมติว่าเรามีสองสตริง 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