Java怎么找一个ArrayList中最长的连续相同元素?

例子:{a,a,a,b,b,b,a,a,a,a,b,b,c}应该返回中间4个aaaa的位置{a,a,a,b,b,a}返回前三个a的位置{a,b,b,a}的话就返回中间两个... 例子:
{a,a,a,b,b,b,a,a,a,a,b,b,c}
应该返回 中间4个aaaa的位置
{a,a,a,b,b,a}
返回前三个a的位置
{a,b,b,a}
的话就返回中间两个b的位置
展开
 我来答
yugi111
2015-09-21 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.4亿
展开全部


import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Joey
{

private static int getSeat(List<String> list)
{
int max = Integer.MIN_VALUE;
int index = 0;
for(int i = 0; i < list.size(); i++)
{
String a = list.get(i);
int num = 1;
int j = i + 1;
while(j < list.size() && a.equals(list.get(j)))
{
num++;
j++;
}
if(max < num)
{
index = i;
max = num;
}
i += num - 1;
}
return index;
}

public static void main(String[] args)
{
//List<String> list = Arrays.asList("a", "a", "a", "b", "b", "b", "a", "a", "a", "a", "b", "b", "c");
//List<String> list = Arrays.asList("a", "a", "a", "b", "b", "a");
List<String> list = Arrays.asList("a", "b", "b", "a");
int i = getSeat(list);
System.out.println(i);
}

}
懂事且健壮灬小喵e
2015-09-21 · TA获得超过756个赞
知道小有建树答主
回答量:575
采纳率:52%
帮助的人:429万
展开全部

List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("2");
list.add("3");
list.add("4444");
list.add("4444");
list.add("4444");
list.add("4444");
list.add("5");
list.add("5");
list.add("5");

int findStrlength = 0;
String findStr = "";
int prevStrLength = 0;
String prevStr = "";
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
if (!prevStr.equals(s)) {
if (prevStrLength > findStrlength) {
findStr = prevStr;
findStrlength = prevStrLength;
}
prevStrLength = 0;
prevStr = s;
}
prevStrLength += 1;
}
System.out.println(findStr + ":" + findStrlength);
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式