找到所有给定字符串都可以用其字符生成的最小字符串
原文:https://www . geeksforgeeks . org/find-最小字符串-带有谁的字符-所有给定的字符串都可以生成/
给定一组字符串 arr[]。任务是生成包含数组中所有字符串的所有字符且大小最小的字符串。可以有许多这样的可能字符串,任何一个都是可以接受的。
示例:
输入: arr[] = {“你的”、“你的”、“或”、“哟”} 输出: ruyo 说明:字符串“ruyo”是包含 arr[]中所有字符串中存在的所有字符的字符串。 可以有许多其他大小为 4 的字符串,例如“oury”。这些也是可以接受的。
输入:arr[]= {“abm”、“bmt”、“cd”、“TCA”} 输出:abcdmm
逼近:这个问题可以用集合数据结构解决。Set 能够删除重复项,这是这个问题中为了最小化字符串大小所需要的。从数组arr【】中的所有字符串中,将集合中的所有字符相加,组成一个包含集合中剩余所有字符的字符串,即为所需答案。
下面是上述方法的实现。
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to implement above approach
import java.util.*;
public class GfG {
public static String minSubstr(String s[])
{
// Stores the concatenated string
// of all the given strings
String str = "";
// Loop to iterate through all
// the given strings
for (int i = 0; i < s.length; i++) {
str += s[i];
}
// Set to store the characters
Set<Character> set =
new HashSet<Character>();
// Loop to iterate over all
// the characters in str
for (int i = 0; i < str.length();
i++) {
set.add(str.charAt(i));
}
// Stores the required answer
String res = "";
Iterator<Character> itr =
set.iterator();
// Loop to iterate over the set
while (itr.hasNext()) {
res += itr.next();
}
// Return Answer
return res;
}
// Driver Code
public static void main(String[] args)
{
String arr[]
= new String[] { "your", "you",
"or", "yo" };
System.out.println(minSubstr(arr));
}
}
Output
ruyo
时间复杂度 : O(N*M),其中 M 为给定数组中字符串的平均长度 辅助空间:** O(1)
版权属于:月萌API www.moonapi.com,转载请注明出处