特定の段落で最大のアナグラムを見つけようとしています。単語を含む文字列が提供されたとします。ここで、すべてのアナグラムを検索し、すべてのアナグラムの中で最大のアナグラムのリストを返したいと考えています。
例えば、
String s = "Hello jjkkllmm how are you. See you at lljjmmkk tomorrow with kkjjmmll. ootty tyoto"
ここで、単語jjkkllmm、lljjmmkk、kkjjmmll、 *ootty 、およびtyotoはアナグラムです。その中で単語jjkkllmm、lljjmmkk、およびkkjjmmllは最大で同じサイズであるため、私のメソッドはすべての最大かつ同じサイズのアナグラム単語を返す必要があります。
私は自分の側から以下のコードを試しましたが、それが完璧な解決策なのか、それとも改善できるのかわかりません。
public static Set<String> findAllAnagram(String words)
{
Map<String,String> tempMap = new HashMap<String,String>();
Set<String> allAnagrams = new LinkedHashSet<String>();
String[] wordArr = words.split(" ");
for (String string : wordArr)
{
if(tempMap.containsKey(sort(string)))
{
allAnagrams.add(tempMap.get(sort(string)));
allAnagrams.add(string);
}
else
{
tempMap.put(sort(string), string);
}
}
return allAnagrams;
}
public static String findBiggestAnagram(String word)
{
Set<String> allAnagrams =findAllAnagram(word);
int biggestAnnagramCount = 0;
String biggestAnnaGramWord = "";
for (String string : allAnagrams)
{
if(biggestAnnagramCount<string.length())
{
biggestAnnaGramWord = string;
biggestAnnagramCount=string.length();
}
}
return biggestAnnaGramWord;
}