মডিউল ২৩-৬ঃ Count Words in a String using Map

এবার আমরা দেখব আমরা ম্যাপ দিয়ে কিভাবে ওয়ার্ড কাউন্ট করতে পারি। আমাদের কাছে যদি একটি সেন্টেন্স থাকে। সেখানে কোন ওয়ার্ড কতবার এসেছে তা যদি কাউন্ট করতে চাই তাহলে আমরা সেটি কিভাবে করতে পারি।

আমরা একটি ম্যাপ নিয়ে নিতে পারি। যার কি হিসেবে থাকবে স্ট্রিং যেহেতু আমরা কোন স্ট্রিং কতবার এসেছে তা কাউন্ট করব। আর ভেলু হিসেবে ইন্টিজার নিতে পারি যেহেতু কাউন্ট নাম্বার ইন্টিজার টাইপের। এই প্রবলেমটি কি আমরা এরে দিয়ে করতে পারতাম ? উত্তর হচ্ছে না। এখানে ম্যাপে আমরা কি হিসেবে স্ট্রিং নিয়েছি যা এরে দিয়ে সম্ভব না।

তারপর আমাদের ইনপুট স্ট্রিং থেকে স্ট্রিংস্ট্রিম ব্যবহার করে প্রতিবার একটি করে ওয়ার্ড নিয়ে এসে ম্যাপে রেখে দিতে পারি এবং তার কাউন্ট ১ বাড়িয়ে দিতে পারি। তাহলেই হয়ে যাবে। সবশেষে ম্যাপ প্রিন্ট করলেই দেখতে পারব কোন ওয়ার্ডটি কতবার এসেছে।

#include <bits/stdc++.h>
using namespace std;
int main()
{
    string sentence;
    getline(cin, sentence);   // স্পেস সহ একটি পুরো সেন্টেন্স ইনপুট নেওয়া হচ্ছে। 
    string word;
    stringstream ss(sentence);   // স্ট্রিংস্ট্রিম দিয়ে প্রতিটি ওয়ার্ড আলাদা করা হচ্ছে।
    map<string, int> mp;        // একটি ম্যাপ নেওয়া হচ্ছে। যার কি হিসেবে নেওয়া হয়েছে স্ট্রিং এবং ভেলু হিসেবে নেওয়া হয়েছে ইন্টিজার।
    while (ss >> word)       // একটি করে ওয়ার্ড এনে
    {
        mp[word]++;         // ম্যাপে ইনসার্ট করে তার ভেলু ১ বাড়িয়ে দেওয়া হচ্ছে। 
    }
    for (auto it = mp.begin(); it != mp.end(); it++)  // লুপ চালিয়ে ম্যাপ প্রিন্ট করা হচ্ছে।
    {
        cout << it->first << " " << it->second << endl;  // যেহেতু ম্যাপ একটি কি ভেলু পেয়ার তাই পেয়ার হিসেবে প্রিন্ট করা হচ্ছে। প্রথম ভেলুটি হচ্ছে আমাদের ওয়ার্ড দ্বিতীয় ভেলুটি হচ্ছে সেই ওয়ার্ডটি কতবার এসেছে।
    }
    
    return 0;
}

কোডটি রান করে একটি সেন্টেন্স ইনপুট দিলে সেই সেন্টেন্সে কোন ওয়ার্ড কতবার এসেছে তা প্রিন্ট হয়ে যাবে।

Last updated