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

ค้นหาจำนวนสตริงย่อยที่สามารถจัดเรียงอักขระใหม่เพื่อสร้างคำที่กำหนดในPython


สมมติว่าเรามีสตริง S (ตัวอักษรทั้งหมดเป็นตัวพิมพ์เล็ก) เราต้องหาจำนวนสตริงย่อยทั้งหมดที่มีความยาวสี่อักขระที่สามารถจัดเรียงอักขระใหม่เพื่อสร้างคำนี้ได้ "นก".

ดังนั้น หากอินพุตเป็นเหมือน "birdb" ผลลัพธ์จะเป็น 2

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

  • cnt :=0

  • สำหรับฉันในช่วง 0 ถึงขนาด s - 3 ทำ

    • bird :=อาร์เรย์ที่มี [0, 0, 0, 0]

    • สำหรับ j ในช่วง i ถึง i + 4 ทำ

      • ถ้า s[j] เหมือนกับ 'b' แล้ว

        • นก[0] :=นก[0] + 1

      • มิฉะนั้นเมื่อ s[j] เหมือนกับ 'i' แล้ว

        • นก[1] :=นก[1] + 1

      • มิฉะนั้นเมื่อ s[j] เหมือนกับ 'r' แล้ว

        • นก[2] :=นก[2] + 1

      • มิฉะนั้นเมื่อ s[j] เหมือนกับ 'd' แล้ว

        • นก[3] :=นก[3] + 1

      • ถ้านกเหมือนกับ [1,1,1,1] แล้ว

        • cnt :=cnt + 1

  • ส่งคืน cnt

ตัวอย่าง

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

def number_of_occurrence(s):
   cnt = 0
   for i in range(0, len(s) - 3):
      bird = [0, 0, 0, 0]
      for j in range(i, i + 4):
         if s[j] == 'b':
            bird[0] += 1
         elif s[j] == 'i':
            bird[1] += 1
         elif s[j] == 'r':
            bird[2] += 1
         elif s[j] == 'd':
            bird[3] += 1
      if bird == [1,1,1,1]:
         cnt += 1
   return cnt
s = "birdb"
print(number_of_occurrence(s))

อินพุต

"birdb"

ผลลัพธ์

2