展开全部
核心的函数如下:public int[] findLongest(char[] A) {
if (A == null || A.length == 0) {
return new int[]{ -1, -1 };
}
int start = 0, maxStart = 0;
int length = 1, maxLength = 1;
for (int i = 1; i
if (A[i] == A[start]) {
length += 1;
if (length > maxLength) {
maxStart = start;
maxLength = length;
}
} else { // find a different element
start = i;
length = 1;
}
}
return new int[]{ maxStart, maxLength };
}
这个函数会返32313133353236313431303231363533e78988e69d8331333337616536回一个长度为2的数组。其中第一个数表示”相邻最长的元素“的起始位置,第二个数表示”相邻最长的元素“的长度(个数)。举例来说:
输入 { 'a', 'b', 'a', 'a', 'b', 'b', 'b', 'a' }
返回 { 4, 3 }
表示”相邻最长的元素“从第4个元素即 b 开始,一共有3个连续的b。
这样应该可以满足题主的需要了。