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

Buddy Strings ใน Python: ตรวจสอบการสลับตัวอักษรเพื่อให้สตริงเท่ากัน

ได้รับสตริงสองตัว A และ B ที่ประกอบด้วยตัวอักษรพิมพ์เล็ก ตรวจสอบว่าสามารถสลับตัวอักษรสองตำแหน่งใน A ได้เพียงครั้งเดียว เพื่อให้ A เท่ากับ B หรือไม่

ตัวอย่าง

A = "ba", B = "ab" → True (สลับ 'b' กับ 'a')

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

  1. ถ้าความยาวไม่เท่ากัน → False
  2. ถ้าตัวอักษรในทั้งสองสตริงไม่ตรงกัน (เรียงลำดับแล้วไม่เหมือน) → False
  3. ถ้า A == B และทุกตัวอักษรไม่ซ้ำกัน → False (ไม่มีคู่ให้สลับ)
  4. นับจำนวนตำแหน่งที่ A[i] != B[i] หากเกิน 2 ตำแหน่ง → False
  5. อื่น ๆ → 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