给定一个仅由小写和大写字符组成的字符串数组arr[] ,任务是通过从字符串删除在同一字符串或任何其他字符串中重复的字符来修改数组。打印修改后的数组。
例子:
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”}
方法:按照以下步骤解决问题:
- 在遍历数组时初始化一个无序集来存储字符串的字符。
- 遍历数组并对每个字符串执行以下操作:
- 遍历字符串的字符。
- 如果当前字符已经存在于集合中,则跳过它。否则,将其附加到输出字符串。
- 将新生成的字符串推送到初始化的列表中以存储输出。
- 打印作为答案获得的字符串列表。
下面是上述方法的实现:
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 现场工作专业课程和学生竞争性编程现场课程。