30/09/2018, 16:03
Tìm và đếm số từ
string s1="hom nay troi co nang"; s2="hom nay troi khong co mua";
Tìm và đếm số lần xuất hiện của những từ có trong cả 2 xâu s1 và s2.
Giúp em ý tưởng thuật toán với ạ.
Bài liên quan
Bạn dùng sub_string.find(str); nhé
Có một mẹo như thế này, trước hết em tách hết các từ đó ra. Sau đó em dùng set hoặc unordered_set (chỉ có trong C++11) để thêm các từ trong s1 và s2.
Điểm đặc biệt
set
là tập không chấp nhận trùng, nên khi em insert các từ vào, thì hàm insert sẽ trả ra một pair Trong đó phần tử đầu tiênpair::first
là iterator của từ mới được thêm vào, Phần tử thử haipair::second
là bool, trả về true nếu từ đó là từ mới, false nếu từ đó là từ cũ.E ko hiểu cách của a @ltd lắm
Em làm kiểu thủ công, nó bị dài
Còn dùng cách của @Is2IT là như thế nào vậy, chỉ rõ cho mình với
Srr, mình đọc nhầm đề bài. Tưởng bạn nói tìm số lần của 1 từ trong 1 str. Cái hàm find kia trả về vị trí của sub_string trong string, nếu nó trả về >0 thì có suất hiện. = -1 là không có.
Còn nếu bạn muốn tìm trong 2 string thì mình có ý tưởng thôi. Máy mình hiện tại không code test đc. Chạy onl hơi lâu
Theo cách dài mà dễ hiểu thì
Mình nghĩ là chẳng cần tách. Đếm luôn cũng đc. Đếm 2 lần
Thế thì phải cần 1 mảng đánh dấu rồi
Ý tưởng của bạn là gì? Mình chỉ đếm rồi in ra count thôi mà,
Ý a @ltd là bạn tách hết các từ trong 2 chuỗi, sẽ có 11 từ gồm “Hom, nay…”
Bạn tạo 2 Set (coi như là 1 tập hợp hay danh sách) để chứa 2 chuỗi s1, s2 của bạn.
Đây là ý tưởng chính thôi, bnj tự làm chi tiết nhé. link ví dụ về set : http://www.cplusplus.com/reference/set/set/insert/
Đó cũng là 1 cách, hoặc dùng find(str) như mình nói
Fun with STL, các bạn góp ý nhé
Hay đấy, hôm trước anh cũng tính dùng cái
std::set_intersection
mà sợ bạn @phatnguyen chưa nắmSTL
không làm được.Mà hình như code của @tranhuanltv thiếu
#include <algorithm>
rồi, hàm sort lỗi.P/S: Nắm STL làm được nhiều trò hay nhỉ. Huân làm C++ giờ là trùm lắm rồi. Nói về C++ thì Huân làm giỏi hơn anh.
Clang vẫn biên dịch được. Thực ra em mới tìm hiểu về STL để thử giải quyết bài toán này thôi anh. Giỏi khỉ gì đâu hehe
Oh, giờ em dùng clang à, chứng tỏ dạo này nghiên cứu sâu nhỉ.
Anh tính làm cLang từ lâu lắm rồi, trong mấy cái rss vẫn lưu clang vào mà tới giờ cũng chưa đụng vào.
Thật sự là e đọc ko hiểu e làm cách truyền thống thôi, bookmark cái này lại đã, sẽ có lúc học STL dùng đến, cảm ơn các anh