在arraylist中查找最长的重复数(初学者(java)

ndh0cuux  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(363)

这是我第一次使用堆栈溢出,所以我很抱歉,如果这是格式不正确的任何方式。对于comp-sci项目,我必须对一个40项的随机数数组列表做一些不同的事情。
我正在努力完成的任务是:
数一数同一号码的最长行程。只有当连续的数字具有相同的值时,运行才会继续。然后打印重复编号和运行长度(例:最长行程为3,长度为5。)
如果有多个最大长度的梯段,则标记最后一个梯段。按以下方式打印带有最长行程标记的数组:1 1 6 5 4 6 3 2 3 2(3 3 3 3)1 5 6 3 4 4
我真的不知道如何处理这个问题。即使只是一些伪代码也会有帮助;我知道这些应该是两个不同的for循环,一个检测运行,另一个打印运行。我有一个朋友的代码,他用数组而不是数组列表完成了这个任务:

public String longestRun()
    {
        int maxRun=1;
        int currentLen = 1;
        int repeated = x[0];
        for (int i =1; i< 40-1; i++)
        {
            if (x[i] == x[i+1])
                currentLen++;
            else
            {
                if (currentLen >= maxRun)
                {
                    maxRun = currentLen;
                    repeated = x[i-1];
                    startRun = i-maxRun;
                    endRun = i-1;
                }
                currentLen = 1;

            }
        } 
        return "The longest run is " + maxRun + " and the repeated number is " + repeated ;
    }

public String printParenth()
    {
        for(int i = 0; i<40; i++)
        {
            if(i != startRun+1 && i != endRun+1)
            System.out.print(x[i]);
             else if(i == startRun+1)
             System.out.print("(" + x[i]);
             else 
             System.out.print(x[i] + ")");

        }
         return "";
    }

我知道如何创建arraylist,转换为string和print,等等,这只是一个任务,我不明白。考虑到arraylist方法的数量和实用性的增加,我假设使用arraylist会更容易。非常感谢,我真的很感激!

jei2mxaa

jei2mxaa1#

把你的数字放在一个列表或一个数组中。
将max设置为1(您将始终至少有一个数字)。
初始化 count 到1。
初始化变量 most 数组中的第一个数字
同时设置变量 last 数组中的第一个数字。
现在遍历从第二个数字开始的列表。
如果当前数字与上一个相同,则递增 count .
那就看看 count > max .
如果是的话
max = count .
most = last 如果不是的话
count = 1
last =当前编号
以这种方式继续,直到检查完所有数字。
最后 most 将包含重复的数字和 max 将包含重复的长度。

相关问题