如何在 Java 的字符串数组中找到最长的连续数字序列?

How to find the longest consecutive sequence of numbers in a string array in Java?

提问人:Ashley 提问时间:10/28/2022 最后编辑:AbraAshley 更新时间:10/28/2022 访问量:185

问:

给定一个列表,其中每个项目都是字母“I”(不完整)或数字(已完成),输出最长的完整传递序列的长度。列表前面是项数。给定 8 4 15 9 I 30 2 I 20,输出为 3(因为最长的完整刀路序列是 4 15 9)。

如果序列是数字和 I 的混合,我能够找到正确的数字,但如果序列只有 I 或只有数字,则无法找到正确的数字。

int currSeq = 0;
int longestSeq = 0;
int lastIndex = 0;
boolean hasHit = false;

for (i = 0; i < numItems; i++) {
    currSeq = i - lastIndex;
    if (listItems[i].equals("I") && currSeq > longestSeq) {
        longestSeq = currSeq - (hasHit ? 1 : 0);
        lastIndex = i;
        hasHit = true;
    }
}
Java 数组 字符串 序列

评论

2赞 Code-Apprentice 10/28/2022
查看本文,了解有关调试代码的提示。
0赞 Jens 10/28/2022
在 if 中,您还应该检查您是否位于数组的末尾 (i==numItems-1)
0赞 queeg 10/28/2022
“列表前面是项目数”——这意味着前 8 个不是列表的一部分。
1赞 Abra 10/28/2022
如果你想要一个正确的答案,你应该发布一个最小的可重复的例子。如何申报?是吗?请注意,数组列表不同。另外,由于这似乎是一项任务,是否有任何限制?您可以使用 Java 编程语言的任何部分来实现这些需求吗?您可以在 JDK 中使用任何类或接口吗?listItemsObject[] listItems

答:

0赞 Oleg Cherednik 10/28/2022 #1
public static int findLongestConsecutiveNumberSequenceLength(Object[] items) {
    int res = 0;

    for (int i = 0, cur = 0; i < items.length; i++) {
        cur = "I".equals(items[i]) ? 0 : cur + 1;
        res = Math.max(res, cur);
    }

    return res;
}