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

ตำแหน่งของกลุ่มใหญ่ใน Python


สมมติว่ามีสตริง S ของอักษรตัวพิมพ์เล็ก ตัวอักษรเหล่านี้จัดกลุ่มต่อเนื่องกันของอักขระเดียวกัน ดังนั้น เมื่อสตริงเช่น S เหมือนกับ "abbxxxxyy" จะมีกลุ่ม "a", "bb", "xxxx", "z" และ "yy" กลุ่มจะเป็นกลุ่มใหญ่เมื่อมีอักขระ 3 ตัวขึ้นไป เราต้องการตำแหน่งเริ่มต้นและสิ้นสุดของกลุ่มใหญ่ทุกกลุ่ม

ดังนั้น หากอินพุตเป็นเหมือน "abcdddeeeeaabbbcd" ผลลัพธ์จะเป็น [[3,5],[6,9],[12,14]]

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

  • ans :=รายการใหม่
  • csum :=0
  • สำหรับแต่ละ a, b ให้สร้างกลุ่มตัวอักษรที่มีตัวอักษรต่อเนื่องกัน do
    • grp :=รายการที่จัดกลุ่ม
    • ถ้าขนาดของ grp> =3 แล้ว
      • แทรกรายการด้วย (csum,csum + ขนาด grp - 1) ลงใน ans
    • csum :=csum + ขนาดของ grp
  • คืนสินค้า

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

ตัวอย่าง

from itertools import groupby
class Solution:
   def largeGroupPositions(self, S):
      ans = []
      csum = 0
      for a, b in groupby(S):
         grp = list(b)
      if len(grp) >= 3:
         ans.append([csum, csum+len(grp)-1])
         csum+=len(grp)
   return ans
ob = Solution()
print(ob.largeGroupPositions("abcdddeeeeaabbbcd"))

อินพุต

"abcdddeeeeaabbbcd"

ผลลัพธ์

[[3, 5], [6, 9], [12, 14]]