如何在Java中找到给定段落中的最大字谜
我试图找出给定段落中最大的字谜。假设向我提供了一个包含单词的字符串。现在我想找到所有的字谜,在所有的字谜中,我想返回所有最大字谜的列表 比如说,如何在Java中找到给定段落中的最大字谜,java,collections,arraylist,core,Java,Collections,Arraylist,Core,我试图找出给定段落中最大的字谜。假设向我提供了一个包含单词的字符串。现在我想找到所有的字谜,在所有的字谜中,我想返回所有最大字谜的列表 比如说, String s = "Hello jjkkllmm how are you. See you at lljjmmkk tomorrow with kkjjmmll. ootty tyoto" 这里的单词jjkkllm、lljjmmkk、kkjjmmll、*ootty和tyoto是字谜,其中的单词jjkkllmm、lljjmmkk和kkjjmmml大
String s = "Hello jjkkllmm how are you. See you at lljjmmkk tomorrow with kkjjmmll. ootty tyoto"
这里的单词jjkkllm、lljjmmkk、kkjjmmll、*ootty和tyoto是字谜,其中的单词jjkkllmm、lljjmmkk和kkjjmmml大小最大且相等,因此我的方法应该返回所有最大且大小相等的字谜单词
我试过下面的代码,但我不知道它是否是完美的解决方案,或者是否可以改进
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;
}
公共静态集findAllAnagram(字符串字)
{
Map tempMap=newhashmap();
Set allAnagrams=new LinkedHashSet();
字符串[]wordArr=words.split(“”);
for(字符串:wordArr)
{
if(tempMap.containsKey(排序(字符串)))
{
add(tempMap.get(sort(string));
allAnagrams.add(字符串);
}
其他的
{
put(排序(字符串),字符串);
}
}
返回阿拉纳格拉姆;
}
公共静态字符串findbiggestangram(字符串字)
{
设置Allanagram=findAllAnagram(word);
int biggestnanagramcount=0;
字符串biggestAnnaGramWord=“”;
用于(字符串:allAnagrams)
{
如果(biggestanagramcount,一个简单的解决方案是为每个字谜建立一个键
一个明显的方法是将字母小写并排序(“参见”=>“ees”)
使用HashMap
保存所有版本的字谜,您可以迭代这些单词,将它们链接到它们的键
在这之后,您只需在列表中包含多个元素的元素中取最大的键。将字符串按空格分割,并在排序后将每个单词添加到一个集合中。在添加到集合后返回false的字符串实际上是一个字谜,因为它已经被添加
char[] chars = original.toCharArray();
Arrays.sort(chars);
String sorted = new String(chars);
set.add(sorted)
你试过什么吗?你只是想让我们来写代码吗?我不擅长java,但你可以尝试s.split(“”)(将字符串转换成数组),然后循环浏览并将每个单词与每个单词进行比较,看它们是否长度相同,每个字母的实例是否相同。@dystroy我已经添加了我的研究并尝试了。@RaisAlam很好。这段代码有效吗?如果有效,有什么不好?如果你只是需要一个回顾,你可以问@dystroy这段代码对我来说很好。我想要其他替代方法这就是为什么我没有公布我的研究结果,并尝试首先导致负面声誉。