এই সমস্যায়, আমরা একটি স্ট্রিং স্ট্র যা কমা দ্বারা বিভক্ত শব্দের সমন্বয়ে গঠিত। আমাদের কাজ হল একটি স্ট্রিং-এ প্রথম বার বার হওয়া শব্দ খুঁজে বের করা .
আমাদের প্রথম শব্দটি খুঁজে বের করতে হবে 'দুই স্থানের মধ্যে স্ট্রিং' যা স্ট্রিং-এ পুনরাবৃত্তি হয়।
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
Input : str = "C program are easy to program" Output : program
সমাধান পদ্ধতি
সমস্যার একটি সহজ সমাধান হল হ্যাশম্যাপ ডেটা স্ট্রাকচার ব্যবহার করা। প্রথম পুনরাবৃত্তি করা শব্দটি খুঁজে পেতে, আমরা হ্যাশম্যাপে প্রতিটি শব্দ এবং এর গণনা (কতবার এটি স্ট্রিং এ প্রদর্শিত হয়েছে) সংরক্ষণ করব। এর জন্য আমরা বর্তমান শব্দটি উপস্থিত আছে কিনা তা পরীক্ষা করে দেখব।
তারপর আমরা হ্যাশম্যাপে একাধিক ঘটনার সংখ্যা সহ প্রথম কাজটি মুদ্রণ করব।
উদাহরণ
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম
#include <bits/stdc++.h> using namespace std; string findFirstRepeatWord(string str){ istringstream iss(str); string word; unordered_map<string, int> wordCountMap; while (getline(iss, word, ' ')) { if (wordCountMap.find(word) != wordCountMap.end()) wordCountMap[word] ++; else wordCountMap.insert(make_pair(word, 1)); } istringstream iss2(str); while (getline(iss2, word, ' ')) { int count = wordCountMap[word]; if (count > 1) { return word; } } return "NoRepetition"; } int main(){ string str = "C program are easy to program"; string repeatedWord = findFirstRepeatWord(str); if (repeatedWord != "NoRepetition") cout<<"The first repeated word is '"<<repeatedWord<<"'"; else cout<<"No word is Repeated in the string"; return 0; }
আউটপুট
The first repeated word is 'program'
কাজটি সহজ করার জন্য এই প্রোগ্রামটি অনেক ইন-বিল্ড ফাংশন ব্যবহার করে৷