在 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'
此程式使用了很多內建函式,使得任務更加輕鬆。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP