Open In App

Modify array of strings by replacing characters repeating in the same or remaining strings

Improve
Improve
Like Article
Like
Save
Share
Report

Given an array of strings arr[] consisting of lowercase and uppercase characters only, the task is to modify the array by removing the characters from the strings which are repeating in the same string or any other string. Print the modified array. 

Examples:

Input: arr[] = {“Geeks”, “For”, “Geeks”}
Output: {“Geks”, “For”}
Explanation:
In arr[0[, ‘e’ occurs twice in the string. Removing a single ‘e’ from the first string modifies “Geeks” to “Geks”. 
In arr[1], all characters are non-repeating. Therefore, the string remains unchanged.
In arr[2], the string is same as arr[0]. Therefore, the complete string is required to be removed.

Input: arr[] = {“Geeks”, “For”, “Geeks”, “Post”}
Output: {“Geks”, “For”, “Pt”}

Approach: Follow the steps to solve the problem :

Below is the implementation of the above approach:

C++




// C++ program for the above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to remove duplicate
// characters across the strings
void removeDuplicateCharacters(vector<string> arr)
{
    // Stores distinct characters
    unordered_set<char> cset;
 
    // Size of the array
    int n = arr.size();
 
    // Stores the list of
    // modified strings
    vector<string> out;
 
    // Traverse the array
    for (auto str : arr) {
 
        // Stores the modified string
        string out_curr = "";
 
        // Iterate over the characters
        // of the modified string
        for (auto ch : str) {
 
            // If character is already present
            if (cset.find(ch) != cset.end())
                continue;
 
            out_curr += ch;
 
            // Insert character into the Set
            cset.insert(ch);
        }
 
        if (out_curr.size())
            out.push_back(out_curr);
    }
 
    // Print the list of modified strings
    for (int i = 0; i < out.size(); i++) {
 
        // Print each string
        cout << out[i] << " ";
    }
}
 
// Driver Code
int main()
{
    // Given array of strings
    vector<string> arr
        = { "Geeks", "For", "Geeks", "Post" };
 
    // Function Call to modify the
    // given array of strings
    removeDuplicateCharacters(arr);
}


Java




// Java program for the above approach
import java.io.*;
import java.lang.*;
import java.util.*;
 
class GFG{
 
// Function to remove duplicate
// characters across the strings
static void removeDuplicateCharacters(String arr[])
{
     
    // Stores distinct characters
    HashSet<Character> cset = new HashSet<>();
 
    // Size of the array
    int n = arr.length;
 
    // Stores the list of
    // modified strings
    ArrayList<String> out = new ArrayList<>();
 
    // Traverse the array
    for(String str : arr)
    {
         
        // Stores the modified string
        String out_curr = "";
 
        // Iterate over the characters
        // of the modified string
        for(char ch : str.toCharArray())
        {
             
            // If character is already present
            if (cset.contains(ch))
                continue;
 
            out_curr += ch;
 
            // Insert character into the Set
            cset.add(ch);
        }
 
        if (out_curr.length() != 0)
            out.add(out_curr);
    }
 
    // Print the list of modified strings
    for(int i = 0; i < out.size(); i++)
    {
         
        // Print each string
        System.out.print(out.get(i) + " ");
    }
}
 
// Driver Code
public static void main(String[] args)
{
 
    // Given array of strings
    String arr[] = { "Geeks", "For", "Geeks", "Post" };
 
    // Function Call to modify the
    // given array of strings
    removeDuplicateCharacters(arr);
}
}
 
// This code is contributed by Kingash


Python3




# Python 3 program for the above approach
 
# Function to remove duplicate
# characters across the strings
def removeDuplicateCharacters(arr):
 
    # Stores distinct characters
    cset = set([])
 
    # Size of the array
    n = len(arr)
 
    # Stores the list of
    # modified strings
    out = []
 
    # Traverse the array
    for st in arr:
 
        # Stores the modified string
        out_curr = ""
 
        # Iterate over the characters
        # of the modified string
        for ch in st:
 
            # If character is already present
            if (ch in cset):
                continue
 
            out_curr += ch
 
            # Insert character into the Set
            cset.add(ch)
 
        if (len(out_curr)):
            out.append(out_curr)
 
    # Print the list of modified strings
    for i in range(len(out)):
 
        # Print each string
        print(out[i], end = " ")
 
# Driver Code
if __name__ == "__main__":
 
    # Given array of strings
    arr = ["Geeks", "For", "Geeks", "Post"]
 
    # Function Call to modify the
    # given array of strings
    removeDuplicateCharacters(arr)
 
    # This code is contributed by ukasp.


C#




// C# program for the above approach
using System;
using System.Collections.Generic;
 
class GFG{
     
// Function to remove duplicate
// characters across the strings
static void removeDuplicateCharacters(string[] arr)
{
     
    // Stores distinct characters
    HashSet<int> cset = new HashSet<int>();
  
    // Size of the array
    int n = arr.Length;
  
    // Stores the list of
    // modified strings
    List<string> Out = new List<string>();
  
    // Traverse the array
    foreach(string str in arr)
    {
         
        // Stores the modified string
        string out_curr = "";
  
        // Iterate over the characters
        // of the modified string
        foreach(char ch in str.ToCharArray())
        {
              
            // If character is already present
            if (cset.Contains(ch))
                continue;
  
            out_curr += ch;
  
            // Insert character into the Set
            cset.Add(ch);
        }
  
        if (out_curr.Length != 0)
            Out.Add(out_curr);
    }
  
    // Print the list of modified strings
    for(int i = 0; i < Out.Count; i++)
    {
          
        // Print each string
        Console.Write(Out[i] + " ");
    }
}
     
    static public void Main (){
         
        // Given array of strings
    string[] arr = { "Geeks", "For",
                     "Geeks", "Post" };
  
    // Function Call to modify the
    // given array of strings
    removeDuplicateCharacters(arr);
}
}
 
// This code is contributed by avanitrachhadiya2155


Javascript




<script>
 
// JavaScript program for the above approach
 
// Function to remove duplicate
// characters across the strings
function removeDuplicateCharacters(arr)
{
    // Stores distinct characters
    var cset = new Set();
 
    // Size of the array
    var n = arr.length;
 
    // Stores the list of
    // modified strings
    var out = [];
 
    // Traverse the array
    arr.forEach(str => {
         
 
        // Stores the modified string
        var out_curr = "";
 
        // Iterate over the characters
        // of the modified string
        str.split('').forEach(ch => {
 
            // If character is already present
            if (!cset.has(ch))
            {
 
            out_curr += ch;
 
            // Insert character into the Set
            cset.add(ch);
            }
        });
 
        if (out_curr.size!=0)
            out.push(out_curr);
    });
 
    // Print the list of modified strings
    for (var i = 0; i < out.length; i++) {
 
        // Print each string
        document.write( out[i] + " ");
    }
}
 
// Driver Code
// Given array of strings
var arr
    = ["Geeks", "For", "Geeks", "Post"];
// Function Call to modify the
// given array of strings
removeDuplicateCharacters(arr);
 
</script>


Output: 

Geks For Pt

 

Time Complexity: O(N * M) where M is the length of the longest string in the array.
Auxiliary Space: O(N)



Last Updated : 13 Aug, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads