Eric Foster ac1688c98b passed all test cases преди 6 години
.gitignore first commit преди 6 години
.travis.yml Create .travis.yml преди 6 години
DuplicateDeleter.java convert to bluej преди 6 години
IntegerDuplicateDeleter.java passed all test cases преди 6 години
IntegerDuplicateDeleterTest.java passed all test cases преди 6 години
README.md Update 'README.md' преди 6 години
StringDuplicateDeleter.java passed all test cases преди 6 години
StringDuplicateDeleterTest.java passed all test cases преди 6 години
package.bluej convert to bluej преди 6 години
pom.xml first commit преди 6 години

README.md

Delete Duplicates

  • Objective
    • To write methods which remove duplicate elements from an array.
  • Purpose
    • To demonstrate practical understanding of arrays, loops, and basic composition.
  • Instructions

    • The IntegerDuplicateDeleter and StringDuplicateDeleter both inherit from the abstract class DuplicateDeleter. The DuplicateDeleter class has two required methods that the IntegerDuplicateDeleter and StringDuplicateDeleter need to implement. You need to add the two methods into the two classes and add a constructor to call the DuplicateDeleter method to make your code compile.
    • Given an object, IntegerDuplicateDeleter, with a composite Integer[] object, write a method
      • removeDuplicatesExactly which removes all values in the array which occur exactly the specified number of times.
      • removeDuplicates which removes all values in the array which occur at least the specified number of times.

    • Given an object, StringDuplicateDeleter, with a composite String[] object, write a method
      • removeDuplicatesExactly which removes all values in the array which occur exactly the specified number of times.
      • removeDuplicates which removes all values in the array which occur at least the specified number of times.
  • Restrictions

    • No use of any built-in data structures, (Collection, List, Map)
    • Operations should be idempotent
      • If the input is the same, then the outputs of the methods should always be the same, regardless of how many times the method is called.





removeDuplicateExactly(n)

Example 1

  • Sample Script

    // : Given
    Integer[] array = new Integer[]{1, 1, 1, 23, 23, 56, 57, 58};
    DuplicateDeleter<Integer> deleter = new IntegerDuplicateDeleter(array);
    
    // : When
    Integer[] actual = deleter.removeDuplicateExactly(3);
    
    // : Then
        Integer[] expected = new Integer[]{23, 23, 56, 57, 58};
    assertArrayEquals(expected, actual);
    

Example 2

  • Sample Script

    // : Given
    Integer[] array = new Integer[]{1, 1, 1, 23, 23, 56, 57, 58};
    DuplicateDeleter<Integer> deleter = new IntegerDuplicateDeleter(array);
    
    // : When
    Integer[] actual = deleter.removeDuplicateExactly(1);
    
    // : Then
        Integer[] expected = {1, 1, 1, 23, 23};
    assertArrayEquals(expected, actual);
    

Example 3

  • Sample Script

    // : Given
    Integer[] array = new Integer[]{0, 0, 0, 1, 1, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5};
    DuplicateDeleter<Integer> deleter = new IntegerDuplicateDeleter(array);
    
    // : When
    Integer[] actual = deleter.removeDuplicateExactly(3);
    
    // : Then
        Integer[] expected = {1, 1, 2, 4, 4, 5, 5, 5, 5};
    assertArrayEquals(expected, actual);
    





removeDuplicates(n)

Example 1

  • Sample Script

    // : Given
    Integer[] array = new Integer[]{1,1,1,23,23,56,57,58};
    DuplicateDeleter<Integer> deleter = new IntegerDuplicateDeleter(array);
    
    // : When
    Integer[] actual = deleter.removeDuplicateExactly(1);
    
    // : Then
        Integer[] expected = {};
    assertArrayEquals(expected, actual);
    

Example 2

  • Sample Script

    // : Given
    Integer[] array = new Integer[]{0, 0, 0, 1, 1, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5};
    DuplicateDeleter<Integer> deleter = new IntegerDuplicateDeleter(array);
    
    // : When
    Integer[] actual = deleter.removeDuplicates(2);
    
    // : Then
        Integer[] expected = {2};
    assertArrayEquals(expected, actual);
    

Example 3

  • Sample Script

    // : Given
    Integer[] array = new Integer[]{0, 0, 0, 1, 1, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5};
    DuplicateDeleter<Integer> deleter = new IntegerDuplicateDeleter(array);
    
    // : When
    Integer[] actual = deleter.removeDuplicates(3);
    
    // : Then
        Integer[] expected = {1, 1, 2, 4, 4};
    assertArrayEquals(expected, actual);
    





Idempotence

Example 1

  • Sample Script

    // : Given
    Integer[] array = new Integer[]{0, 0, 0, 1, 1, 2, 3, 3, 3, 4, 4, 5, 5, 5, 5};
    DuplicateDeleter<Integer> deleter = new IntegerDuplicateDeleter(array);
    deleter.removeDuplicates(0);
    deleter.removeDuplicates(1);
    deleter.removeDuplicates(2);
    
    // : When
    Integer[] actual = deleter.removeDuplicates(3);
    
    // : Then
        Integer[] expected = {1, 1, 2, 4, 4};
    assertArrayEquals(expected, actual);
    

Example 2

  • Sample Script

    // : Given
    Integer[] array = new Integer[]{1, 1, 1, 23, 23, 56, 57, 58};
    DuplicateDeleter<Integer> deleter = new IntegerDuplicateDeleter(array);
    
        deleter.removeDuplicates(0);
    deleter.removeDuplicates(1);
    deleter.removeDuplicates(2);
    
    // : When
    Integer[] actual = deleter.removeDuplicatesExactly(3);
    
    // : Then
        Integer[] expected = {23, 23, 56, 57, 58};
    assertArrayEquals(expected, actual);