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

โปรแกรมนับจำนวนวิธีแบ่ง String ที่ดี (Good Splits) ด้วย Python

Good split: แบ่ง string s เป็น p + q (p,q ไม่ว่าง) จำนวน distinct characters ใน p และ q เท่ากัน ใช้ 2 Counter: left (สะสมจากซ้าย), right (เริ่มจาก count ทั้ง s) วนลูปย้าย char จาก right ไป left ถ้า len(left) == len(right) นับ good split

ขั้นตอนการทำงาน

  1. left = Counter(), right = Counter(s)
  2. result = 0
  3. วนลูป c ใน s: left[c]++, right[c]-- ถ้า right[c]==0: del right[c]
  4. ถ้า len(left) == len(right): result++
  5. คืน result

ตัวอย่างโค้ด


from collections import Counter

def solve(s):
    result = 0
    left, right = Counter(), Counter(s)
    for c in s:
        left[c] += 1
        right[c] -= 1
        if not right[c]:
            del right[c]
        if len(left) == len(right):
            result += 1
    return result

s = "xxzxyx"
print(solve(s))  # Output: 2

อินพุต/เอาต์พุต

Input: "xxzxyx"
Output: 2

Good splits: ("xxz", "xyx") distinct=2,2 และ ("xxzx", "yx") distinct=2,2