我试图在给定的段落中找到最大的字谜。假设向我提供了一个包含单词的字符串。现在我想找到所有的字谜,在所有的字谜中,我想返回所有最大字谜的列表。
例如,
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;
}