Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาคำที่ซ้ำคำแรกในสตริงใน C++


ในปัญหานี้ เราเป็นสตริง str ที่ประกอบด้วยคำที่คั่นด้วยจุลภาค งานของเราคือ ค้นหาคำที่ซ้ำคำแรกในสตริง .

เราต้องหาคำว่า 'string between two spaces' คำแรกที่ซ้ำกันใน string

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

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

แนวทางการแก้ปัญหา

วิธีแก้ปัญหาอย่างง่ายคือการใช้โครงสร้างข้อมูลแฮชแมป ในการค้นหาคำที่ซ้ำคำแรก เราจะเก็บแต่ละคำและจำนวนคำนั้น (จำนวนครั้งที่ปรากฏในสตริง ) ใน hashmap สำหรับสิ่งนี้เราจะตรวจสอบต่อไปว่าคำปัจจุบันมีอยู่หรือไม่

จากนั้นเราจะพิมพ์งานแรกที่มีจำนวนมากกว่าหนึ่งรายการในแฮชแมป

ตัวอย่าง

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

#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'

โปรแกรมนี้ใช้ฟังก์ชันในตัวจำนวนมากเพื่อให้งานง่ายขึ้น