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

ตรวจสอบว่าสตริงสามารถว่างได้หรือไม่โดยการลบสตริงย่อยที่กำหนดซ้ำในPython


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

ดังนั้น หากอินพุตเป็น s ="pipipinnn" t ="pin" ผลลัพธ์จะเป็น True เนื่องจากเราสามารถลบ "pin" ออกจาก "pipipinnn" ได้ เราก็จะได้ "pipinn" ลบ "pin" ออกอีกครั้ง รับสตริง "พิน" แล้วเอาออกเพื่อให้ว่าง

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

  • ในขณะที่ขนาดของ s> 0, do
    • ตำแหน่ง :=ดัชนีเริ่มต้นของ t ใน s
    • ถ้าตำแหน่งไม่อยู่ใน s แล้ว
      • ออกมาจากวงจร
    • s :=ลบ t ออกจาก s หนึ่งครั้ง
  • คืนค่า จริง เมื่อขนาดของ s เท่ากับ 0 มิฉะนั้น เท็จ

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

ตัวอย่าง

def solve(s, t):
   while len(s) > 0:
      position = s.find(t)
      if position == -1:
         break
      s = s.replace(t, "", 1)
   return len(s) == 0
s = "pipipinnn"
t = "pin"
print(solve(s, t))

อินพุต

"pipipinnn", "pin"

ผลลัพธ์

True