Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm từ được lặp lại đầu tiên trong một chuỗi trong C ++

Trong bài toán này, chúng ta là một chuỗi str bao gồm các từ được phân tách bằng dấu phẩy. Nhiệm vụ của chúng tôi là tìm từ được lặp lại đầu tiên trong một chuỗi .

Chúng ta cần tìm từ đầu tiên 'chuỗi giữa hai dấu cách' được lặp lại trong chuỗi.

Hãy lấy một ví dụ để hiểu vấn đề,

Input : str = "C program are easy to program"
Output : program

Phương pháp tiếp cận giải pháp

Một giải pháp đơn giản cho vấn đề là sử dụng cấu trúc dữ liệu hashmap. Để tìm từ được lặp lại đầu tiên, chúng tôi sẽ lưu trữ từng từ và số lượng của nó (số lần nó xuất hiện trong chuỗi) trong bản đồ băm. Đối với điều này, chúng tôi sẽ tiếp tục kiểm tra xem từ hiện tại có xuất hiện hay không.

Sau đó, chúng tôi sẽ in tác phẩm đầu tiên có nhiều hơn một số lần xuất hiện trong bản đồ băm.

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi

#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;
}

Đầu ra

The first repeated word is 'program'

Chương trình này sử dụng nhiều chức năng trong bản dựng để làm cho nhiệm vụ dễ dàng hơn.