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

hrirmatl  于 2022-10-30  发布在  Java
关注(0)|答案(1)|浏览(199)

给定一个列表,其中每个项目是字母“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;
    }
}
zpqajqem

zpqajqem1#

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;
}

相关问题