import
java.util.HashMap;
import
java.util.Map;
public
class
Main {
public
static
String longestCommonAnagramSubsequence(String[] strings) {
Map<Character, Integer> commonFreq =
new
HashMap<>();
Map<Character, Integer> freqMap;
for
(String str : strings) {
freqMap =
new
HashMap<>();
for
(
char
c : str.toCharArray()) {
freqMap.put(c, freqMap.getOrDefault(c,
0
) +
1
);
}
if
(commonFreq.isEmpty()) {
commonFreq.putAll(freqMap);
}
else
{
for
(Map.Entry<Character, Integer> entry : commonFreq.entrySet()) {
char
key = entry.getKey();
int
commonCount = Math.min(entry.getValue(), freqMap.getOrDefault(key,
0
));
entry.setValue(commonCount);
}
}
}
StringBuilder commonChars =
new
StringBuilder();
for
(Map.Entry<Character, Integer> entry : commonFreq.entrySet()) {
char
key = entry.getKey();
int
count = entry.getValue();
for
(
int
i =
0
; i < count; i++) {
commonChars.append(key);
}
}
char
[] commonCharsArray = commonChars.toString().toCharArray();
java.util.Arrays.sort(commonCharsArray);
return
new
String(commonCharsArray);
}
public
static
void
main(String[] args) {
String[] strings1 = {
"geeks"
,
"esrka"
,
"efrsk"
};
System.out.println(longestCommonAnagramSubsequence(strings1));
String[] strings2 = {
"loop"
,
"lol"
,
"olive"
};
System.out.println(longestCommonAnagramSubsequence(strings2));
}
}