Cho một chuỗi, nhiệm vụ là kiểm tra xem hai nửa của chuỗi có cùng tập ký tự hay không. Để giải bài toán này, ta tách chuỗi từ giữa, thu được hai nửa, sau đó kiểm tra từng nửa có cùng tập ký tự. Nếu độ dài chuỗi không chẵn thì bỏ qua ký tự giữa và kiểm tra phần còn lại.
Thuật toán
Bước 1: Cho một chuỗi. Bước 2: Tách chuỗi đầu vào thành hai phần. Bước 3: Chuyển cả hai phần thành từ điển bằng phương thức Counter(iterator), mỗi từ điển chứa ký tự làm khóa và tần suất làm giá trị. Bước 4: So sánh hai từ điển này. Dùng toán tử ==. Trước kiểm tra khóa của cả hai từ điển có giống nhau không, sau đó kiểm tra giá trị của mỗi khóa. Nếu cả hai trường hợp đều đúng thì hai nửa có cùng tập ký tự.
Mã ví dụ
from collections import Counter def checkhalves(input): length = len(input) if (length % 2 != 0): first = input[0:int(length / 2)] second = input[(int(length / 2)) + 1:] else: first = input[0:int(length / 2)] second = input[int(length / 2):] if Counter(first) == Counter(second): print ("Hai nửa giống nhau") else: print ("Hai nửa không giống nhau") # Chương trình chính if __name__ == "__main__": input = input("Nhập Chuỗi") checkhalves(input)Kết quả
Nhập Chuỗi abba Hai nửa giống nhau