Trang chủ » Blog » [Mỗi ngày 1 thuật toán] Tìm hai chuỗi cùng có các ký tự giống nhau

[Mỗi ngày 1 thuật toán] Tìm hai chuỗi cùng có các ký tự giống nhau

bởi nhungnguyen5 | 16:55 | Blog | Thuật toán

Tiếp nỗi chuỗi series “Mỗi ngày 1 thuật toán” là bài toán tìm hai chuỗi cùng có các ký tự giống nhau. Để giải bài toán này, CodeGym sẽ hướng dẫn bạn ý tưởng thuật toán để giải. Đồng thời, cung cấp ba đoạn mã nguồn quan trọng, bao gồm: Java, PHP và Python cho đề bài này.

Đề bài: Cho hai chuỗi string1 và string2. Hãy kiểm tra xem string1 và string2 có cùng chứa các ký tự giống như nhau hay không? (trật tự của các ký tự có thể khác nhau, không phân biệt chữ hoa và chữa thường)

1. Thuật toán:

Ý tưởng chính của thuật toán này là sử dụng bảng băm để lưu trữ tần suất xuất hiện của mỗi ký tự, sau đó đối chiếu với chuỗi ký tự thứ hai để kiểm tra xem chúng có chứa cùng những ký tự đó hay không.

  1. Loại bỏ khoảng trắng và chuyển hai chuỗi ký tự sang chữ thường để so sánh không phân biệt chữ hoa chữ thường.
  2. Kiểm tra xem hai chuỗi ký tự có cùng độ dài không. Nếu không, chúng không thể là anagram nên trả về kết quả false.
  3. Tạo ra một bảng băm (dictionary) để lưu trữ tần suất xuất hiện của mỗi ký tự trong chuỗi ký tự thứ nhất.
  4. Duyệt qua chuỗi ký tự thứ nhất, tăng giá trị tương ứng với mỗi ký tự trong bảng băm.
  5. Duyệt qua chuỗi ký tự thứ hai, giảm giá trị tương ứng với mỗi ký tự trong bảng băm. Nếu gặp ký tự không có trong bảng băm, trả về kết quả false vì chúng không thể là anagram.
  6. Kiểm tra tất cả các giá trị trong bảng băm có bằng 0 không. Nếu có, trả về kết quả true vì chúng là anagram. Nếu không, trả về kết quả false.

Đó ý tưởng giải quyết bài toán bài toán tìm hai chuỗi cùng có các ký tự giống nhau. Dưới đây sẽ là ví dụ cụ thể mã nguồn trong từng ngôn ngữ lập trình.

2. Pseudo-code

Mỗi ngày 1 thuật toán - Bài toán tìm 2 chuỗi cùng có các ký tự giống nhau

3. Mã nguồn Java:

Mỗi ngày 1 thuật toán - Bài toán tìm 2 chuỗi cùng có các ký tự giống nhau

4. Mã nguồn PHP:

Mỗi ngày 1 thuật toán - Bài toán tìm 2 chuỗi cùng có các ký tự giống nhau

5. Mã nguồn Python:

Mỗi ngày 1 thuật toán - Bài toán tìm 2 chuỗi cùng có các ký tự giống nhau

Theo bạn thì thuật toán này có độ phức tạp là bao nhiêu? Đây chỉ mới là một cách, bạn có thêm ý tưởng nào để giải bài toán này nữa không? Hãy để lại câu trả lời của mình nhé. Hy vọng bài viết trên sẽ hữu ích với bạn.

Để cập nhật chuỗi bài viết “Mỗi ngày một thuật toán” của CodeGym, hãy theo dõi Tại đây nhé!!!

0 Lời bình

Gửi Lời bình

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

BÀI VIẾT LIÊN QUAN

BẠN MUỐN HỌC LẬP TRÌNH?

GỌI NGAY

098 953 44 58

Đăng ký tư vấn lộ trình học lập trình

Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

5 + 10 =

TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM
TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM