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

โปรแกรมตรวจสอบว่าสตริงสองสตริงใกล้เคียงกันหรือไม่ใน Python

ปัญหา

สตริง s และ t ใกล้เคียงกัน (close) ถ้าเปลี่ยนจากหนึ่งเป็นอีกอันได้ด้วยการดำเนินการ: 1. สลับตัวอักษรสองตัวที่มีอยู่ (เช่น abcde → aecdb) 2. แปลงทุกตัวอักษรชนิดหนึ่งเป็นอีกชนิดหนึ่ง และในทางกลับกัน (เช่น aacabb → bbcbaa) ดำเนินการได้ไม่จำกัดครั้ง

ตัวอย่าง

s = "zxyyyx", t = "xyyzzz" → true (zxyyyx → zxxyyy → yxxzzz → xyyzzz)

ขั้นตอนการแก้ปัญหา

  1. ถ้า set(s) != set(t): คืน False
  2. a := sorted(Counter(s).values()), b := sorted(Counter(t).values())
  3. ถ้า a != b: คืน False
  4. คืน True

การนำไปใช้งาน (Python)

from collections import Counter
def solve(s, t):
    if set(s) != set(t):
        return False
    a = sorted(Counter(s).values())
    b = sorted(Counter(t).values())
    if a != b:
        return False
    return True

s = "zxyyyx"
t = "xyyzzz"
print(solve(s, t))

อินพุต

"zxyyyx", "xyyzzz"

เอาต์พุต

True