exercise No. 190

Various integer array algorithms


The following Maven project contains a series of yet unimplemented methods and corresponding tests currently being excluded by an @Disabled annotation:

@Disabled // Remove me to enable testing your application
public class ArrayMethodTest {

  public void testFindIndex(){
    assertEquals(Arraymethods.findIndex(new int[]{1, 3, -3, 5}, -3), 2);...

Import this project for getting started. The following hints may help you completing the implementation


This effectively requires extending the concept of swapping just two integer values within a block

int a = 3, b = 5;

// Other code ...

{// Swap values of a and b
  final int tmp = a;
  a = b;
  b = tmp;

Consider a two step implementation:

  1. Normalize a given palindrome candidate by transforming to lower case and erasing non-letters:

    Hey, Roy! Am I mayor? Yeh! --> heyroyamimayoryeh

    You may search the API of class Character assisting you to distinguish letters from non-letters.

  2. Check the remaining string for being a palindrome.


You may copy int[] b array to a shadow array and then subsequently erase all elements of int[] a from this copy. The method findIndex is quite helpful.

Consider for example int[] bCopy = {1, 3, 4, 3, 7} containing 5 elements. Suppose our array a contains the value 3 which exists at index position 1 in bCopy. We may override the value index position 1 by the last array value 7 and thereby keeping track of reducing the number of array elements to 4 like {1, 7, 4, 3}.

Off course the array bCopy cannot shrink. But we may introduce an integer variable to account for the effective number of array elements still to be considered. If and only if all elements from a are subsequently found within bCopy the two arrays a and b are equal.