আমাদের একাধিক বাক্য স্ট্রিং রূপে দেওয়া আছে। লক্ষ্য হল সকল বাক্যে যেসব শব্দ আছে তাদের সংখ্যা গণনা করা।
নোট: শুধু ছোট হাতের অক্ষর (lowercase) থাকা শব্দগুলোই বিবেচনা করা হবে।
যদি বাক্যগুলো হয়:
"I am learning C language" "learning new things is easy" "Kids are learning healthy habits"
শুধু "learning" তিনों বাক্যে আছে। তাই গণনা ১।
ইনপুট: "The clothes were dry", "All the kids were playing", "Those were the best days"
আউটপুট: সব দিয়ে गये বাক্যে উপস্থিত শব্দের গণনা: 2
ব্যাখ্যা: "the" এবং "were" শব্দ দুটি সকল বাক্যে আছে।
ইনপুট: "We are going to school", "If you are willing then continue", "All these are sold"
আউটপুট: সব দিয়ে गये বাক্যে উপস্থিত শব্দের গণনা: 1
ব্যাখ্যা: "are" শব্দটি সকল বাক্যে আছে।
এই পদ্ধতিতে আমরা প্রথম বাক্যের শব্দগুলো vector
তারপর অন্য সকল বাক্যে সেটের শব্দগুলো খুঁজে বের করব unordered_map
- vector
vec নিন এবং সেটিকে সকল বাক্য স্ট্রিং দিয়ে আরম্ভিক করুন। - বাক্যের সংখ্যা হবে vec.size()।
- words_sentences(vector
vec, int size) ফাংশন বাক্য ভেক্টর এবং আকার নেয় এবং সব বাক্যে উপস্থিত শব্দের গণনা ফেরত দেয়। - আরম্ভিক গণনা ০ নিন।
- স্ট্রিং str নিন বাক্যে পৃথক শব্দ সংরক্ষণের জন্য।
- প্রথম বাক্য vec[0]-এ while লুপ দিয়ে ট্রভার্স করুন।
- এর ভিতরে আরেকটি while লুপ দিয়ে স্পেস পাওয়া পর্যন্ত পৃথক শব্দ str[]-এ বের করুন।
- এখন str-এ প্রথম বাক্যের একটি শব্দ আছে, (str,true) জোড়া সেটে যোগ করুন।
- vec[0]-এ সংরক্ষিত বাক্যের সকল শব্দের জন্য এটি করুন।
- ভেক্টর set-এ এখন প্রথম বাক্যের সকল শব্দ true ভ্যালু সহ জোড়া হিসেবে আছে।
- ২য় বাক্য থেকে শেষ বাক্য পর্যন্ত vec-এ for লুপ দিয়ে ট্রভার্স করুন j=1 থেকে j
- vec[j]-এ বর্তমান বাক্য থেকে প্রতিটি শব্দ বের করে str-এ সংরক্ষণ করুন।
- এই শব্দগুলো map check-এ true হিসেবে চিহ্নিত করুন check[str]=true ব্যবহার করে।
- vec[j]-এ বর্তমান বাক্যের সকল শব্দের জন্য এটি করুন।
- for লুপ দিয়ে vector set ট্রভার্স করুন এবং বর্তমান বাক্যে এই শব্দগুলো check-এ আছে কিনা সেটি set-এ খুঁজে বের করুন।
- for লুপ দিয়ে vector set আবার ট্রভার্স করুন।
- যদি বর্তমান শব্দ সকল বাক্যে থাকে তবে set[k].second true হবে। যদি হ্যাঁ, count বাড়ান।
- শেষে count ভেরিয়েবলে সকল বাক্যে উপস্থিত শব্দের সংখ্যা থাকবে।
- ফলাফল হিসেবে count ফেরত দিন।
#includeusing namespace std; int words_sentences(vector vec, int size) { int count = 0; int i = 0; string str; unordered_map check; vector > set; pair str_bool; while (i < vec[0].size()) { str = ""; while (i < vec[0].size() && vec[0][i] != ' ') { str += vec[0][i]; i++; } i++; if (str != "") { str_bool = make_pair(str, true); set.push_back(str_bool); } } for (int j = 1; j < size; j++) { check.clear(); i = 0; while (i < vec[j].size()) { str = ""; while (i < vec[j].size() && vec[j][i] != ' ') { str += vec[j][i]; i++; } i++; if (str != "") { check[str] = true; } } for (int k = 0; k < set.size(); k++) { if (set[k].second != false && check[set[k].first] == false) { set[k].second = false; } else if (set[k].second != false && check[set[k].first] == true) { check[set[k].first] = false; } } } for (int k = 0; k < set.size(); k++) { if (set[k].second == true) { count++; } } return count; } int main() { vector vec; vec.push_back("Honesty is the best policy"); vec.push_back("policy varies from company to company"); vec.push_back("Employee should follow the policy of a company"); int size = vec.size(); cout << "Count of words that are present in all the given sentences are: " << words_sentences(vec, size); return 0; }
Count of words that are present in all the given sentences are: 1