Giả sử ta có hai chuỗi A và B chỉ chứa chữ cái thường; ta cần kiểm tra xem có thể hoán đổi hai ký tự trong A để kết quả bằng B hay không.
Ví dụ, nếu đầu vào là A = "ba", B = "ab", thì đầu ra sẽ là True.
Để giải quyết, ta thực hiện các bước sau:
- Nếu độ dài A không bằng độ dài B, thì:
- Trả về False
- Ngược lại, nếu A và B có phần tử không chung nhau, thì:
- Trả về False
- Ngược lại, nếu A bằng B và tất cả ký tự trong A đều khác nhau, thì:
- Trả về False
- Ngược lại:
- count := 0
- Với i từ 0 đến độ dài A, thực hiện:
- Nếu A[i] khác B[i], thì:
- count := count + 1
- Nếu count bằng 3, thì:
- Trả về False
- Nếu A[i] khác B[i], thì:
- Trả về True
Hãy xem triển khai sau để hiểu rõ hơn:
Ví dụ
class Solution: def buddyStrings(self, A, B): if len(A) != len(B): return False elif sorted(A) != sorted(B): return False elif A == B and len(set(A)) == len(A): return False else: 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"))Đầu vào
"ba","ab"
Đầu ra
True