이 문제에서 우리는 쉼표로 구분된 단어로 구성된 문자열 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'
이 프로그램은 작업을 더 쉽게 만들기 위해 많은 내장 함수를 사용합니다.