Modify array of strings by replacing characters repeating in the same or remaining strings
Last Updated :
13 Aug, 2021
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>
Time Complexity: O(N * M) where M is the length of the longest string in the array.
Auxiliary Space: O(N)