📌  相关文章
📜  通过替换字符以相同的或剩余的字符串重复修改字符串数组

📅  最后修改于: 2021-10-27 16:48:52             🧑  作者: Mango

给定一个仅由小写和大写字符组成的字符串数组arr[] ,任务是通过从字符串删除在同一字符串或任何其他字符串中重复的字符来修改数组。打印修改后的数组。

例子:

方法:按照以下步骤解决问题:

  • 在遍历数组时初始化一个无序集来存储字符串的字符。
  • 遍历数组并对每个字符串执行以下操作:
    • 遍历字符串的字符。
    • 如果当前字符已经存在于集合中,则跳过它。否则,将其附加到输出字符串。
    • 将新生成的字符串推送到初始化的列表中以存储输出。
  • 打印作为答案获得的字符串列表。

下面是上述方法的实现:

C++
// C++ program for the above approach
 
#include 
using namespace std;
 
// Function to remove duplicate
// characters across the strings
void removeDuplicateCharacters(vector arr)
{
    // Stores distinct characters
    unordered_set cset;
 
    // Size of the array
    int n = arr.size();
 
    // Stores the list of
    // modified strings
    vector 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 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 cset = new HashSet<>();
 
    // Size of the array
    int n = arr.length;
 
    // Stores the list of
    // modified strings
    ArrayList 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 cset = new HashSet();
  
    // Size of the array
    int n = arr.Length;
  
    // Stores the list of
    // modified strings
    List Out = new List();
  
    // 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


输出:
Geks For Pt

时间复杂度: O(N * M) 其中M是数组中最长字符串的长度。
辅助空间: O(N)

如果您希望与专家一起参加现场课程,请参阅DSA 现场工作专业课程学生竞争性编程现场课程