Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Ghép chuỗi từ các ký tự không chung của 2 chuỗi trong Python

Cho 2 chuỗi, tạo chuỗi mới chứa các ký tự chỉ xuất hiện ở 1 trong 2 chuỗi (không chung). Ví dụ: "hafeez" và "kareem" → "hfzkrm".

Thuật toán

  1. Khởi tạo chuỗi kết quả rỗng.
  2. Duyệt chuỗi 1: nếu ký tự không có trong chuỗi 2 → thêm vào kết quả.
  3. Duyệt chuỗi 2: nếu ký tự không có trong chuỗi 1 → thêm vào kết quả.
  4. In kết quả.

Mã nguồn

string_1 = "hafeez"
string_2 = "kareem"
new_string = ""

# Ký tự chỉ ở string_1
for ch in string_1:
    if ch not in string_2:
        new_string += ch

# Ký tự chỉ ở string_2
for ch in string_2:
    if ch not in string_1:
        new_string += ch

print(f"New String: {new_string}")

Kết quả

New String: hfzkrm

Cách tối ưu với Set (O(n+m))

set1 = set(string_1)
set2 = set(string_2)

# Symmetric difference: phần tử chỉ ở 1 trong 2 set
unique_chars = set1 ^ set2  # hoặc set1.symmetric_difference(set2)

# Giữ thứ tự xuất hiện (nếu cần)
result = ''.join([ch for ch in string_1 + string_2 if ch in unique_chars])
print(result)  # hfzkrm (thứ tự: h,f,z,k,r,m)

So sánh

CáchĐộ phức tạpGiữ thứ tựLưu ý
Loop + in stringO(n*m)CóChậm nếu chuỗi dài
Set symmetric diffO(n+m)Không (set unordered)Nhanh, cần sort/order thêm
Set + list comprehensionO(n+m)CóCân bằng tốt

Kết luận

Dùng Set cho hiệu năng, list comprehension để giữ thứ tự. Bài toán liên quan: tìm ký tự chung (intersection), hợp (union).