Правила
[Одномерные массивы]
64. Даны два целочисленные массива. Определить, можно ли в первом из них выбрать такие k идущих подряд элементов Xj, Xj+1, ..., Xk-1, чтобы Xj = Y1, Xj+1 = Y2, ..., Xk-1 = Yk.
public static List<int[]> getAjkInB(int[] a, int[] b) {
List<int[]> list = new LinkedList<int[]>();
int n = 0, k = a.length;
while(n + 1 < k) { // n + 1 нам не надо искать 1 элемент
for (int i = 0; i < b.length - (k - 1 - n); i++) {
int[] temp = Arrays.copyOfRange(a, n, k);
if(Arrays.equals(temp, Arrays.copyOfRange(b, i, (k - n + i))))
list.add(temp);
}
if(n + 1 == --k) { // n + 1 нам не надо искать 1 элемент
n++;
k = a.length;
}
}
return list;
}
может, но лучше тут использовать StringBuffer или StringBuilder. А может, и есть уже в основной библиотеке функция для проверки массива на вхождение в другой
А чем лучше, если не секрет? Я только знаю, что у StringBuilder'а есть методы, которых нету у обычного String'a, типа setCharAt(), но они тут, похоже, не нужны.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
a = [0, 0, 45, -2, 5, 0, 0, -2, 3, 1, -10, 0, 0, 343, 3, 1, 11]
b = [8, 8, 45, -2, 5, 8, 8, -2, 3, 1, -11, 8, 8, 34, 33, 11, 1]
[45, -2, 5]
[45, -2]
[-2, 5]
[-2, 3, 1]
[-2, 3]
[3, 1]
[3, 1]
Как пример:
А так для вашего случая вместо всего мудреного можно и намного проще: