ได้รับสตริงสองตัว A และ B ที่ประกอบด้วยตัวอักษรพิมพ์เล็ก ตรวจสอบว่าสามารถสลับตัวอักษรสองตำแหน่งใน A ได้เพียงครั้งเดียว เพื่อให้ A เท่ากับ B หรือไม่
ตัวอย่าง
A = "ba", B = "ab" → True (สลับ 'b' กับ 'a')
ขั้นตอนการแก้ปัญหา
- ถ้าความยาวไม่เท่ากัน →
False - ถ้าตัวอักษรในทั้งสองสตริงไม่ตรงกัน (เรียงลำดับแล้วไม่เหมือน) →
False - ถ้า
A == Bและทุกตัวอักษรไม่ซ้ำกัน →False(ไม่มีคู่ให้สลับ) - นับจำนวนตำแหน่งที่
A[i] != B[i]หากเกิน 2 ตำแหน่ง →False - อื่น ๆ →
True
การติดตั้งใน Python
class Solution:
def buddyStrings(self, A, B):
if len(A) != len(B):
return False
if sorted(A) != sorted(B):
return False
if A == B and len(set(A)) == len(A):
return False
count = 0
for i in range(len(A)):
if A[i] != B[i]:
count += 1
if count == 3:
return False
return True
ob = Solution()
print(ob.buddyStrings("ba", "ab")) # True
อินพุต / เอาต์พุต
Input: "ba", "ab" Output: True