ปัญหา
สตริง s และ t ใกล้เคียงกัน (close) ถ้าเปลี่ยนจากหนึ่งเป็นอีกอันได้ด้วยการดำเนินการ:
1. สลับตัวอักษรสองตัวที่มีอยู่ (เช่น abcde → aecdb)
2. แปลงทุกตัวอักษรชนิดหนึ่งเป็นอีกชนิดหนึ่ง และในทางกลับกัน (เช่น aacabb → bbcbaa)
ดำเนินการได้ไม่จำกัดครั้ง
ตัวอย่าง
s = "zxyyyx", t = "xyyzzz" → true (zxyyyx → zxxyyy → yxxzzz → xyyzzz)
ขั้นตอนการแก้ปัญหา
- ถ้า
set(s) != set(t): คืนFalse a := sorted(Counter(s).values()),b := sorted(Counter(t).values())- ถ้า
a != b: คืนFalse - คืน
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