SHARE
SPREAD
HELP

The Tradition of Sharing

Help your friends and juniors by posting answers to the questions that you know. Also post questions that are not available.


To start with, Sr2Jr’s first step is to reduce the expenses related to education. To achieve this goal Sr2Jr organized the textbook’s question and answers. Sr2Jr is community based and need your support to fill the question and answers. The question and answers posted will be available free of cost to all.

 

#
Authors:
Stuart Reges, Marty Stepp
Chapter:
Arrays
Exercise:
Exercises
Question:14 | ISBN:9780136091813 | Edition: 2

Question

Write a method called contains that accepts two arrays of integers a1 and a2 as parameters and that returns a boolean value indicating whether or not the sequence of elements in a2 appears in a1 ( true for yes, false for no).

The sequence must appear consecutively and in the same order. For example, consider the following arrays:

int[] list1 = {1, 6, 2, 1, 4, 1, 2, 1, 8};

int[] list2 = {1, 2, 1};

The call of contains(list1, list2) should return true because the sequence of values in list2 {1, 2, 1} is contained in list1 starting at index 5. If list2 had stored the values {2, 1, 2}, the call of contains(list1, list2) would return false . Any two lists with identical elements are considered to contain each other. Every array contains the empty array, and the empty array does not contain any arrays other than the empty array itself.

TextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbookTextbook

Answer

Implementation of contains method:

	public static boolean contains(int[] a1, int[] a2)
	{
		for(int i = 0; i <= a1.length - a2.length; i++)
		{
			int countInBoth = 0;
			
			for(int j = 0; j < a2.length; j++)
			{
				if(a1[i + j] == a2[j])
					countInBoth++;
			}
			
			if(countInBoth == a2.length)
				return true;
		}
		
		return false;
	}
0 0

Discussions

Post the discussion to improve the above solution.