diff --git a/pom.xml b/pom.xml
index d10c35e..4d4515a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,6 +7,18 @@
com.zipcodewilmington.labs
arrayutils
1.0-SNAPSHOT
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 8
+ 8
+
+
+
+
junit
diff --git a/src/main/java/com/zipcodewilmington/StringArrayUtils.java b/src/main/java/com/zipcodewilmington/StringArrayUtils.java
index 4bcce66..3f3859d 100644
--- a/src/main/java/com/zipcodewilmington/StringArrayUtils.java
+++ b/src/main/java/com/zipcodewilmington/StringArrayUtils.java
@@ -1,5 +1,7 @@
package com.zipcodewilmington;
+import java.util.*;
+
/**
* Created by leon on 1/29/18.
*/
@@ -25,7 +27,7 @@ public static String getSecondElement(String[] array) {
* @return last element in specified array
*/ // TODO
public static String getLastElement(String[] array) {
- return null;
+ return array[array.length - 1];
}
/**
@@ -33,7 +35,7 @@ public static String getLastElement(String[] array) {
* @return second to last element in specified array
*/ // TODO
public static String getSecondToLastElement(String[] array) {
- return null;
+ return array[array.length - 2];
}
/**
@@ -42,7 +44,8 @@ public static String getSecondToLastElement(String[] array) {
* @return true if the array contains the specified `value`
*/ // TODO
public static boolean contains(String[] array, String value) {
- return false;
+ List arrayList = new ArrayList<>(Arrays.asList(array));
+ return arrayList.contains(value);
}
/**
@@ -50,7 +53,12 @@ public static boolean contains(String[] array, String value) {
* @return an array with identical contents in reverse order
*/ // TODO
public static String[] reverse(String[] array) {
- return null;
+ String[] reversedArray = new String[array.length];
+ int j = array.length - 1;
+ for(int i = 0; i < array.length; i++){
+ reversedArray[j--] = array[i];
+ }
+ return reversedArray;
}
/**
@@ -58,7 +66,12 @@ public static String[] reverse(String[] array) {
* @return true if the order of the array is the same backwards and forwards
*/ // TODO
public static boolean isPalindromic(String[] array) {
- return false;
+ int midPoint = array.length / 2;
+ int lastIndex = array.length - 1;
+ for(int i = 0; i < midPoint; i++){
+ if(!array[i].equals(array[lastIndex - i])) return false;
+ }
+ return true;
}
/**
@@ -66,7 +79,14 @@ public static boolean isPalindromic(String[] array) {
* @return true if each letter in the alphabet has been used in the array
*/ // TODO
public static boolean isPangramic(String[] array) {
- return false;
+ String alphabet = "abcdefghijklmnopqrstuvwxyz";
+ List arrayList = new ArrayList<>(Arrays.asList(array));
+ String allContents = arrayList.toString();
+ allContents = allContents.replaceAll(",", "").replaceAll(" ", "").toLowerCase(Locale.ROOT);
+ for(int i = 0; i < alphabet.length(); i++){
+ if(allContents.indexOf(alphabet.charAt(i)) == -1) return false;
+ }
+ return true;
}
/**
@@ -75,7 +95,13 @@ public static boolean isPangramic(String[] array) {
* @return number of occurrences the specified `value` has occurred
*/ // TODO
public static int getNumberOfOccurrences(String[] array, String value) {
- return 0;
+ int count = 0;
+ for(String element : array){
+ if(element == value){
+ count++;
+ }
+ }
+ return count;
}
/**
@@ -84,7 +110,12 @@ public static int getNumberOfOccurrences(String[] array, String value) {
* @return array with identical contents excluding values of `value`
*/ // TODO
public static String[] removeValue(String[] array, String valueToRemove) {
- return null;
+ ArrayList arrayList = new ArrayList<>();
+ Collections.addAll(arrayList, array);
+ while(arrayList.contains(valueToRemove)){
+ arrayList.remove(valueToRemove);
+ }
+ return arrayList.toArray(new String[0]);
}
/**
@@ -92,15 +123,42 @@ public static String[] removeValue(String[] array, String valueToRemove) {
* @return array of Strings with consecutive duplicates removes
*/ // TODO
public static String[] removeConsecutiveDuplicates(String[] array) {
- return null;
+ ArrayList arrayList = new ArrayList<>();
+ String lastElement = "";
+ for(String element : array){
+ if(element != lastElement){
+ arrayList.add(element);
+ }
+ lastElement = element;
+ }
+ return arrayList.toArray(new String[0]);
}
/**
* @param array array of chars
* @return array of Strings with each consecutive duplicate occurrence concatenated as a single string in an array of Strings
*/ // TODO
+
+ /*
+ String[] array = {"a", "a", "a", "b", "c", "c", "a", "a", "d"}; arrayList has 1 position, and it's an a.
+ String[] expected = {"aaa", "b", "cc", "aa", "d"};
+
+ */
public static String[] packConsecutiveDuplicates(String[] array) {
- return null;
+ int length = array.length;
+ int lastIndex = 0;
+ ArrayList arrayList = new ArrayList<>();
+ arrayList.add(array[0]);
+
+ for(int i = 1; i < length; i++){
+ if(arrayList.get(lastIndex).contains(array[i])){ //does my arrayList, at the last examined index contain what the array current shows
+ arrayList.set(lastIndex, (arrayList.get(lastIndex) + array[i])); //arrayList.set(index, value)
+ } else { //no longer looking at a consecutive
+ lastIndex++; //I'm looking at a new 0R non-duplicate character
+ arrayList.add(array[i]);
+ }
+ }
+ return arrayList.toArray(new String[0]);
}