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

Python – นับคู่สตริงที่เป็น Reverse ของกัน (Count Reverse String Pairs)

ภาพรวม

หมายเหตุ: โค้ดตัวอย่างเดิมมีปัญหา** – คำนวณ max per key ไม่ใช่ count reverse pairs**

โจทย์จริง: นับคู่สตริงที่กลับกัน (เช่น "abc" และ "cba")


def count_reverse_pairs(strings):
    seen = set()
    count = 0
    for s in strings:
        rev = s[::-1]
        if rev in seen:
            count += 1
        seen.add(s)
    return count

# ทดสอบ
my_list = ["abc", "cba", "hello", "olleh", "world", "python"]
print(count_reverse_pairs(my_list))  # 2 pairs: (abc,cba), (hello,olleh)

โค้ดต้นฉบับ (คำนวณ Max per Key - ไม่เกี่ยวกับ Reverse Pairs)


my_list = [
    {"Python": 8, "is": 1, "fun": 9},
    {"Python": 2, "is": 9, "fun": 1},
    {"Python": 5, "is": 10, "fun": 7}
]

result = {}
for d in my_list:
    for key, value in d.items():
        if key in result:
            result[key] = max(result[key], value)
        else:
            result[key] = value

print(result)  # {'Python': 8, 'is': 10, 'fun': 9}

ผลลัพธ์ของโค้ดต้นฉบับ

The result is: {'Python': 8, 'is': 10, 'fun': 9}

สรุป

  • Title บอกว่า "count pairs of reverse strings" แต่โค้ดทำ "max per key across dicts"
  • หากต้องการนับ reverse pairs ให้ใช้ฟังก์ชัน count_reverse_pairs() ด้านบน
  • หากต้องการ max per key โค้ดต้นฉบับถูกต้อง