diff --git a/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java b/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java index ee550c5..53826a5 100644 --- a/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java +++ b/src/main/java/com/zipcodewilmington/looplabs/IntegerDuplicateDeleter.java @@ -1,8 +1,86 @@ package com.zipcodewilmington.looplabs; +import java.util.Arrays; + /** * Created by leon on 1/29/18. * @ATTENTION_TO_STUDENTS You are forbidden from modifying the signature of this class. */ public final class IntegerDuplicateDeleter extends DuplicateDeleter { -} + public IntegerDuplicateDeleter(Integer[] intArray) { + super(intArray); + } + + + public boolean elementOccursLessTimesThanMaxThreshhold(int elementBeingExamined, int maxNumberOfDuplications) { + int occurencesOfElement = 0; + for (int value : this.array) { + if (value == elementBeingExamined) { + occurencesOfElement++; + } + } + return occurencesOfElement < maxNumberOfDuplications; + } + + + public boolean elementOccursExactNumberGiven(int elementBeingExamined, int exactNumberOfDuplications) { + int occurencesOfElement = 0; + for (int value : this.array) { + if (value == elementBeingExamined) { + occurencesOfElement++; + } + } + return occurencesOfElement != exactNumberOfDuplications; + } + + @Override + public Integer[] removeDuplicates(int maxNumberOfDuplications) { + Integer[] finalArray = new Integer[this.array.length]; + int iterator = 0; + for (int value : this.array) { + if (elementOccursLessTimesThanMaxThreshhold(value, maxNumberOfDuplications)) { + finalArray[iterator] = value; + iterator++; + System.out.println(value); + } + } + int countOfNotNullElements = 0; + for (Integer value : finalArray) { + if (value != null) { + countOfNotNullElements++; + } + } + System.out.println("NOT NULL ELEMNTS " + countOfNotNullElements); + Integer[] finalfinalArray = new Integer[countOfNotNullElements]; + for (int i = 0; i < countOfNotNullElements; i++) { + finalfinalArray[i] = finalArray[i]; + } + return finalfinalArray; + } + + + @Override + public Integer[] removeDuplicatesExactly(int exactNumberOfDuplications) { + Integer[] finalArray = new Integer[this.array.length]; + int iterator = 0; + for (int value : this.array) { + if (elementOccursExactNumberGiven(value, exactNumberOfDuplications)) { + finalArray[iterator] = value; + iterator++; + System.out.println(value); + } + } + int countOfNotNullElements = 0; + for (Integer value : finalArray) { + if (value != null) { + countOfNotNullElements++; + } + } + System.out.println("NOT NULL ELEMNTS " + countOfNotNullElements); + Integer[] finalfinalArray = new Integer[countOfNotNullElements]; + for (int i = 0; i < countOfNotNullElements; i++) { + finalfinalArray[i] = finalArray[i]; + } + return finalfinalArray; + } +} \ No newline at end of file diff --git a/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java b/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java index 4818fe3..a74eb5c 100644 --- a/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java +++ b/src/main/java/com/zipcodewilmington/looplabs/StringDuplicateDeleter.java @@ -5,4 +5,79 @@ * @ATTENTION_TO_STUDENTS You are forbidden from modifying the signature of this class. */ public final class StringDuplicateDeleter extends DuplicateDeleter { + public StringDuplicateDeleter(String[] intArray) { + super(intArray); + } + + public boolean elementOccursLessTimesThanMaxThreshhold(String elementBeingExamined, int maxNumberOfDuplications) { + int occurencesOfElement = 0; + for (String value : this.array) { + if (value.equals(elementBeingExamined)) { + occurencesOfElement++; + } + } + return occurencesOfElement < maxNumberOfDuplications; + } + + + public boolean elementOccursExactNumberGiven(String elementBeingExamined, int exactNumberOfDuplications) { + int occurencesOfElement = 0; + for (String value : this.array) { + if (value.equals(elementBeingExamined)) { + occurencesOfElement++; + } + } + return occurencesOfElement != exactNumberOfDuplications; + } + + + @Override + public String[] removeDuplicates(int maxNumberOfDuplications) { + String[] finalArray = new String[this.array.length]; + int iterator = 0; + for (String value : this.array) { + if (elementOccursLessTimesThanMaxThreshhold(value, maxNumberOfDuplications)) { + finalArray[iterator] = value; + iterator++; + System.out.println(value); + } + } + int countOfNotNullElements = 0; + for (String value : finalArray) { + if (value != null) { + countOfNotNullElements++; + } + } + System.out.println("NOT NULL ELEMNTS " + countOfNotNullElements); + String[] finalfinalArray = new String[countOfNotNullElements]; + for (int i = 0; i < countOfNotNullElements; i++) { + finalfinalArray[i] = finalArray[i]; + } + return finalfinalArray; + } + + @Override + public String[] removeDuplicatesExactly(int exactNumberOfDuplications) { + String[] finalArray = new String[this.array.length]; + int iterator = 0; + for (String value : this.array) { + if (elementOccursExactNumberGiven(value, exactNumberOfDuplications)) { + finalArray[iterator] = value; + iterator++; + System.out.println(value); + } + } + int countOfNotNullElements = 0; + for (String value : finalArray) { + if (value != null) { + countOfNotNullElements++; + } + } + System.out.println("NOT NULL ELEMNTS " + countOfNotNullElements); + String[] finalfinalArray = new String[countOfNotNullElements]; + for (int i = 0; i < countOfNotNullElements; i++) { + finalfinalArray[i] = finalArray[i]; + } + return finalfinalArray; + } }