Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 문자열에서 첫 번째 반복 단어 찾기

<시간/>

이 문제에서 우리는 쉼표로 구분된 단어로 구성된 문자열 str입니다. 우리의 임무는 문자열에서 처음으로 반복되는 단어를 찾는 것입니다. .

문자열에서 반복되는 첫 번째 단어 '두 공백 사이의 문자열'을 찾아야 합니다.

문제를 이해하기 위해 예를 들어 보겠습니다.

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'

이 프로그램은 작업을 더 쉽게 만들기 위해 많은 내장 함수를 사용합니다.