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 :
- Initialize an unordered set to store the characters of the string while traversing the array.
- Traverse the array and for each string, perform the following operations:
- Iterate over the characters of the string.
- If the current character is already present in the Set, skip it. Otherwise, append it to the output string.
- Push the newly generated string into the list initialized to store the output.
- Print the list of strings obtained as the answer.
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> |
Geks For Pt
Time Complexity: O(N * M) where M is the length of the longest string in the array.
Auxiliary Space: O(N)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!