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

Chương trình loại bỏ ký tự trùng lặp từ chuỗi cho trước trong Python


Giả sử chúng ta có một chuỗi s. Chúng ta phải loại bỏ tất cả các ký tự trùng lặp đã xuất hiện trước đó. Chuỗi cuối cùng sẽ giữ nguyên thứ tự các ký tự như chuỗi gốc.

Chúng ta có thể giải quyết bằng cách sử dụng ordered dictionary để giữ thứ tự chèn của các ký tự. Giá trị sẽ là tần suất của các ký tự đó, tuy nhiên giá trị tần suất không quan trọng ở đây. Sau khi tạo xong dictionary, chúng ta chỉ cần lấy các key và nối chúng để có chuỗi kết quả.

Vì vậy, nếu đầu vào là s = "bbabcaaccdbaabababc", thì đầu ra sẽ là "bacd".

  • d := một dictionary nơi các key được lưu theo thứ tự chèn
  • với mỗi ký tự c trong s, thực hiện
    • nếu c chưa có trong d, thì d[c] := 0
    • d[c] := d[c] + 1
  • nối các key theo thứ tự đúng để tạo chuỗi đầu ra và trả về.

Ví dụ

Hãy xem triển khai sau để hiểu rõ hơn:

from collections import OrderedDict
def solve(s):
    d = OrderedDict()
    for c in s:
        if c not in d:
            d[c] = 0
        d[c] += 1
    return ''.join(d.keys())

s = "bbabcaaccdbaabababc"
print(solve(s))

Đầu vào

"bbabcaaccdbaabababc"

Đầu ra

"bacd"