इस समस्या में, हम अल्पविराम से अलग किए गए शब्दों से मिलकर एक स्ट्रिंग स्ट्रिंग हैं। हमारा काम है एक स्ट्रिंग में दोहराए गए पहले शब्द को ढूंढना ।
हमें स्ट्रिंग में दोहराए जाने वाले पहले शब्द 'दो रिक्त स्थान के बीच की स्ट्रिंग' को खोजने की जरूरत है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
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'
कार्य को आसान बनाने के लिए यह प्रोग्राम बहुत सारे इन-बिल्ड फ़ंक्शंस का उपयोग करता है।