10/10/2018, 10:47

Thuật toán so sánh hai chuỗi

Ví dụ có 2 chuỗi
Chuỗi 1:
I am Snoob.
Và chuỗi thứ 2: ( = chuỗi 1 + edited)
My name is Snoob.
Cho em hỏi làm sao để ra dạng giống giống cái này:
[dấu bỏ]I am[dấu bỏ] My name is Snoob.
Có nghĩa là so chuỗi thứ 2 với chuỗi thứ nhất để xét sự khác biệt của nó. Có ai biết cái này không
Vô Thin viết 13:00 ngày 10/10/2018
Đụng đến lĩnh vực logic mờ là khoai lắm đấy. Tìm đọc thêm một cuốn sách về trí tuệ nhân tạo, đọc chút ít nữa về hệ chuyên gia rồi nấu lẩu một nồi các món đó sẽ giúp giải quyết phần nào vấn đề khoai đó.
snoob viết 13:01 ngày 10/10/2018
Được gửi bởi superthin
Đụng đến lĩnh vực logic mờ là khoai lắm đấy. Tìm đọc thêm một cuốn sách về trí tuệ nhân tạo, đọc chút ít nữa về hệ chuyên gia rồi nấu lẩu một nồi các món đó sẽ giúp giải quyết phần nào vấn đề khoai đó.
Làm gì mà ghê thế bác, bác nói làm em phải sợ đó . Ở đây nói đơn giản là tìm những từ cùng có ở cả 2 đoạn thì khoang màu, những từ đoạn 1 có đoạn 2 không có thì gạch bỏ v.v.v., nhưng tới giờ vẫn chưa biết làm
Nếu ai ko rõ câu hỏi thì vào www.textdiff.com là hiểu hà
chesterben viết 12:49 ngày 10/10/2018
Đây ko phải là vấn đề dễ dàng. Tuy nhiên, với ví dụ đơn giản của bạn thì mình đưa ra giải thuật như sau:
- Duyệt theo n từ (= với tổng số từ của chuỗi đó), rồi n=n-1... các chuổi, đồng thời so sánh (2 vòng for).
- Trong mỗi trường hợp xét n, sau khi thoát vòng for ta lấy được các từ, cụm từ giống nhau với các chỉ số đã đc index. Tôi lấy lun vd của bạn:
str1 -> idx = 3
str2 -> idx = 4
- Tôi dùng hàm split để tách các thành phần trước từ có idx=3 ở str1 và idx=4 ở str2.
- Tôi chèn và màu mè hóa theo trình bày tùy ý với str1 làm chuẩn.
thuyduongcd viết 13:03 ngày 10/10/2018
- Explode 2 chuỗi ra 2 mảng

- Dùng for duyệt hết mảng 1, trong đó kết hợp dùng in_arra()y để so sánh phần tử hiện tại với mảng 2, nếu true (ứng với những từ cùng có ở cả 2 đoạn thì khoang màu), thêm <font color="...">phía trước nó và </font> phía sau nó, nếu false (ứng với những từ đoạn 1 có đoạn 2 không có thì gạch bỏ ) thì thêm tag format tương tự.

- Cuối cùng implode nó lại
snoob viết 12:53 ngày 10/10/2018
Được gửi bởi thuyduongcd
- Explode 2 chuỗi ra 2 mảng

- Dùng for duyệt hết mảng 1, trong đó kết hợp dùng in_arra()y để so sánh phần tử hiện tại với mảng 2, nếu true (ứng với những từ cùng có ở cả 2 đoạn thì khoang màu), thêm <font color="...">phía trước nó và </font> phía sau nó, nếu false (ứng với những từ đoạn 1 có đoạn 2 không có thì gạch bỏ ) thì thêm tag format tương tự.

- Cuối cùng implode nó lại
Cách này hình như không ổn.
Ví dụ:
Chuoi 1
abc Chuoi 1
Thì chẳng lẽ so sánh abc với Chuoi rồi chuoi với 1. Như thế thì wrong hết rồi
Bài liên quan
0