Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中找到给定段落中的最大字谜_Java_Collections_Arraylist_Core - Fatal编程技术网

如何在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这段代码对我来说很好。我想要其他替代方法这就是为什么我没有公布我的研究结果,并尝试首先导致负面声誉。