สมมติว่าเรามีสตริงตัวพิมพ์เล็ก s เราต้องตรวจสอบว่าความถี่ของอักขระทั้งหมดเท่ากันหลังจากลบอักขระหนึ่งตัวหรือไม่
ดังนั้น หากอินพุตเป็นเหมือน s ="abbc" ผลลัพธ์จะเป็น True เนื่องจากเราสามารถลบหนึ่ง b เพื่อรับสตริง "abc" โดยที่ความถี่ของแต่ละองค์ประกอบคือ 1
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- การเกิดขึ้น :=แผนที่ที่มีอักขระ s และความถี่ทั้งหมด
- หากการปรากฏของอักขระทั้งหมดใน s เหมือนกัน ดังนั้น
- คืนค่า True
- สำหรับอักขระแต่ละตัวใน s ทำ
- อุบัติการณ์[ถ่าน] :=การเกิดขึ้น[อักขระ] - 1
- หากการปรากฏของอักขระทั้งหมดใน s เหมือนกัน ดังนั้น
- คืนค่า True
- อุบัติการณ์[ถ่าน] :=การเกิดขึ้น[อักขระ] + 1
- คืนค่าเท็จ
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
from collections import defaultdict def allSame(occurrence): counts = list(occurrence.values()) return all(element == counts[0] for element in counts) def solve(s): occurrence = defaultdict(int) for char in s: occurrence[char] += 1 if allSame(occurrence): return True for char in s: occurrence[char] -= 1 if allSame(occurrence): return True occurrence[char] += 1 return False s = "abbc" print(solve(s))
อินพุต
"abbc"
ผลลัพธ์
True