Cho một chuỗi. Nhiệm vụ tìm các ký tự có tần suất lớn hơn 1 trong chuỗi.
Ví dụ, chuỗi "Hello World. Let's learn Python" sẽ tìm các chữ cái xuất hiện nhiều lần. Kết quả:
e: 3 l: 4 o: 3 space: 4 r: 2 t: 2 n: 2
Để triển khai, dùng Python Collections. Từ collection, có Counter() method. Counter() đếm đối tượng hashtable. Ở đây, tách ký tự từ text và làm mỗi ký tự thành key của dictionary, số lần xuất hiện là value.
Thuật toán
Bước 1: Tìm cặp key-value từ chuỗi, mỗi ký tự là key, count là value. Bước 2: Với mỗi key, kiểm tra value > 1 hay không. Bước 3: Nếu > 1 thì là duplicate, đánh dấu. Ngược lại bỏ qua.
Ví dụ mã
from collections import Counter
def calc_char_freq(string):
freq_count = Counter(string) # dictionary: key=chữ cái, value=tần suất
for key in freq_count.keys():
if freq_count.get(key) > 1:
print("(" + key + ", " + str(freq_count.get(key)) + ")")
myStr = 'Hello World. Let\'s learn Python'
calc_char_freq(myStr)
Kết quả
(e, 3) (l, 4) (o, 3) ( , 4) (r, 2) (t, 2) (n, 2)