สมมติว่าเรามีรายการคำ คำเหล่านี้อาจเกิดขึ้นหลายครั้ง เราต้องแสดงความถี่ของคำเหล่านี้และนับว่ามีคำที่ไม่ซ้ำกันกี่คำ
ตัวอย่างเช่น หาก words = ["Book", "Sound", "Language", "Computer", "Book", "Language"] ผลลัพธ์จะเป็น (4, '2 1 2 1') เพราะมีคำที่ไม่ซ้ำ 4 คำ คำที่ 1 และ 3 เกิดขึ้น 2 ครั้ง
ขั้นตอนการแก้ปัญหา
- d := OrderedDict เพื่อเก็บรายการตามลำดับการแทรก
- สำหรับแต่ละ w ใน words:
- ถ้า w อยู่ใน d: d[w] := d[w] + 1
- มิฉะนั้น: d[w] := 1
- คืนค่าคู่ของ (ขนาดของ keys ใน d) และ (รวมค่าทั้งหมดจาก d เป็นสตริงคั่นช่องว่าง)
ตัวอย่างโค้ด
from collections import OrderedDict
def solve(words):
d = OrderedDict()
for w in words:
if w in d:
d[w] += 1
else:
d[w] = 1
return len(d.keys()), ' '.join([str(d[k]) for k in d.keys()])
words = ["Book", "Sound", "Language", "Computer", "Book", "Language"]
print(solve(words))
อินพุต
["Book", "Sound", "Language", "Computer", "Book", "Language"]
เอาต์พุต
(4, '2 1 2 1')