Sunday, November 17, 2024
Google search engine
HomeData Modelling & AICheck duplicates in a stream of strings

Check duplicates in a stream of strings

Given an array arr[] of strings containing the names of employees in a company. Assuming that the names are being entered into a system one after another, the task is to check whether the current name is entered for the first time or not.

Examples: 

Input: arr[] = {“neveropen”, “for”, “neveropen”} 
Output: 
No 
No 
Yes

Input: arr[] = {“abc”, “aaa”, “cba”} 
Output: 
No 
No 
No 

Approach: Create an unordered_set to store the names of the employees and start traversing the array, if the current name is already present in the set then print Yes else print No and insert it into the set.

Below is the implementation of the above approach: 

C++




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to insert the names
// and check whether they appear
// for the first time
void insertNames(string arr[], int n)
{
 
    // To store the names
    // of the employees
    unordered_set<string> set;
    for (int i = 0; i < n; i++) {
 
        // If current name is appearing
        // for the first time
        if (set.find(arr[i]) == set.end()) {
            cout << "No\n";
            set.insert(arr[i]);
        }
        else {
            cout << "Yes\n";
        }
    }
}
 
// Driver code
int main()
{
    string arr[] = { "neveropen", "for", "neveropen" };
    int n = sizeof(arr) / sizeof(string);
 
    insertNames(arr, n);
 
    return 0;
}


Java




// Java implementation of the approach
import java.util.*;
 
class GFG
{
 
// Function to insert the names
// and check whether they appear
// for the first time
static void insertNames(String arr[], int n)
{
 
    // To store the names
    // of the employees
    HashSet<String> set = new HashSet<String>();
    for (int i = 0; i < n; i++)
    {
 
        // If current name is appearing
        // for the first time
        if (!set.contains(arr[i]))
        {
            System.out.print("No\n");
            set.add(arr[i]);
        }
        else
        {
            System.out.print("Yes\n");
        }
    }
}
 
// Driver code
public static void main(String[] args)
{
    String arr[] = { "neveropen", "for", "neveropen" };
    int n = arr.length;
 
    insertNames(arr, n);
}
}
 
// This code contributed by PrinciRaj1992


Python3




# Python3 implementation of the approach
 
# Function to insert the names
# and check whether they appear
# for the first time
def insertNames(arr, n) :
 
    # To store the names
    # of the employees
    string = set();
     
    for i in range(n) :
 
        # If current name is appearing
        # for the first time
        if arr[i] not in string :
            print("No");
            string.add(arr[i]);
     
        else :
            print("Yes");
     
# Driver code
if __name__ == "__main__" :
 
    arr = [ "neveropen", "for", "neveropen" ];
    n = len(arr);
 
    insertNames(arr, n);
 
# This code is contributed by AnkitRai01


C#




// C# implementation of the approach
using System;
using System.Collections.Generic;
 
class GFG
{
 
// Function to insert the names
// and check whether they appear
// for the first time
static void insertNames(String []arr, int n)
{
 
    // To store the names
    // of the employees
    HashSet<String> set = new HashSet<String>();
    for (int i = 0; i < n; i++)
    {
 
        // If current name is appearing
        // for the first time
        if (!set.Contains(arr[i]))
        {
            Console.Write("No\n");
            set.Add(arr[i]);
        }
        else
        {
            Console.Write("Yes\n");
        }
    }
}
 
// Driver code
public static void Main(String[] args)
{
    String []arr = { "neveropen", "for", "neveropen" };
    int n = arr.Length;
 
    insertNames(arr, n);
}
}
 
// This code is contributed by Rajput-Ji


Javascript




<script>
 
    // Javascript implementation of the approach
     
// Function to insert the names
// and check whether they appear
// for the first time
function insertNames(arr, n)
{
   
    // To store the names
    // of the employees
    let set = new Set();
    for (let i = 0; i < n; i++)
    {
   
        // If current name is appearing
        // for the first time
        if (!set.has(arr[i]))
        {
            document.write("No"  + "<br/>");
            set.add(arr[i]);
        }
        else
        {
            document.write("Yes" + "<br/>");
        }
    }
}
     
    // Driver code
     
    let arr = [ "neveropen", "for", "neveropen" ];
    let n = arr.length;
   
    insertNames(arr, n);
  
 // This code is contributed by susmitakundugoaldanga.
</script>


Output

No
No
Yes

Time Complexity: O(n), Where n is the length of the given string array.
Auxiliary Space: O(n), To store the names of the employees in a set.

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments