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

โปรแกรมตรวจสอบแพทเทิร์นความยาว m ซ้ำ K หรือมากกว่านั้น มีหรือไม่มีใน Python


สมมติว่าเรามีจำนวนอาร์เรย์ที่มีค่าบวก เราต้องหารูปแบบของความยาว m ที่ซ้ำกัน k หรือมากกว่า k ครั้ง รูปแบบนี้เป็นอาร์เรย์ย่อยที่ไม่ทับซ้อนกัน (ต่อเนื่องกัน) ที่ประกอบด้วยค่าตั้งแต่หนึ่งค่าขึ้นไปและมีการทำซ้ำหลายครั้ง รูปแบบถูกกำหนดโดยความยาวและจำนวนการทำซ้ำ เราต้องตรวจสอบว่ามีรูปแบบของความยาว m ซ้ำ k หรือมากกว่านั้นหรือไม่

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[3,5,1,4,3,1,4,3,1,4,3,9,6,1], m =3, k =2 แล้วผลลัพธ์ที่ได้ จะเป็น True เพราะมีรูปแบบ [1,4,3] ซึ่งมีอยู่ 3 ครั้ง

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

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

    • sub1 :=อาร์เรย์ย่อยของ nums จากดัชนี i ถึง (i+m*k) - 1

    • sub2 :=k อาร์เรย์ย่อยที่ต่อเนื่องกันของ nums จากดัชนี i ถึง (i+m-1)

    • ถ้า sub1 เหมือนกับ sub2 แล้ว

      • คืนค่า True

  • คืนค่าเท็จ

ตัวอย่าง (Python)

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

def solve(nums, m, k):
   for i in range(len(nums)):
      sub1 = nums[i:i+m*k]
      sub2 = nums[i:i+m]*k
      if sub1 == sub2:
         return True
   return False

nums = [3,5,1,4,3,1,4,3,1,4,3,9,6,1]
m = 3
k = 2
print(solve(nums, m, k))

อินพุต

[3,5,1,4,3,1,4,3,1,4,3,9,6,1], 3, 2

ผลลัพธ์

True