From 4f224d705438e7c868f4364ce358cf5a2704e169 Mon Sep 17 00:00:00 2001 From: Greg Donnelly Date: Tue, 2 Mar 2021 16:17:41 -0500 Subject: [PATCH 1/7] Reverse passing tests --- .../zipcodewilmington/StringArrayUtils.java | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/StringArrayUtils.java b/src/main/java/com/zipcodewilmington/StringArrayUtils.java index 4bcce66..6d9ed1a 100644 --- a/src/main/java/com/zipcodewilmington/StringArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/StringArrayUtils.java @@ -1,5 +1,12 @@ package com.zipcodewilmington; +import jdk.nashorn.internal.ir.BlockLexicalContext; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + /** * Created by leon on 1/29/18. */ @@ -7,7 +14,7 @@ public class StringArrayUtils { /** * @param array array of String objects * @return first element of specified array - */ // TODO + */ // WORKING public static String getFirstElement(String[] array) { return array[0]; } @@ -15,7 +22,7 @@ public static String getFirstElement(String[] array) { /** * @param array array of String objects * @return second element in specified array - */ + */ //WORKING public static String getSecondElement(String[] array) { return array[1]; } @@ -23,17 +30,20 @@ public static String getSecondElement(String[] array) { /** * @param array array of String objects * @return last element in specified array - */ // TODO + */ + //WORKING public static String getLastElement(String[] array) { - return null; + return array[array.length - 1]; } /** * @param array array of String objects * @return second to last element in specified array - */ // TODO + */ + //WORKING public static String getSecondToLastElement(String[] array) { - return null; + + return array[array.length - 2]; } /** @@ -48,9 +58,12 @@ public static boolean contains(String[] array, String value) { /** * @param array of String objects * @return an array with identical contents in reverse order - */ // TODO + */ // WORKING public static String[] reverse(String[] array) { - return null; + List list = Arrays.asList(array); + Collections.reverse(list); + String[] revArr = list.toArray(array); + return revArr; } /** From f1bb5ec55d78a583b9a7e6bc589983ab94282360 Mon Sep 17 00:00:00 2001 From: Greg Donnelly Date: Tue, 2 Mar 2021 17:25:29 -0500 Subject: [PATCH 2/7] isPalindromic passing tests --- .../java/com/zipcodewilmington/StringArrayUtils.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/StringArrayUtils.java b/src/main/java/com/zipcodewilmington/StringArrayUtils.java index 6d9ed1a..4bb191d 100644 --- a/src/main/java/com/zipcodewilmington/StringArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/StringArrayUtils.java @@ -69,9 +69,17 @@ public static String[] reverse(String[] array) { /** * @param array array of String objects * @return true if the order of the array is the same backwards and forwards - */ // TODO + */ // WORKING public static boolean isPalindromic(String[] array) { - return false; + Boolean revOrNot = false; + for (int i = 0; i < array.length / 2; i++) { + if (!array[i].equalsIgnoreCase((array[array.length - i - 1]))) { + revOrNot = false; + } else { + revOrNot = true; + } + } + return revOrNot; } /** From d94971b9d4b6bf058804b6a6822c99141f2075a3 Mon Sep 17 00:00:00 2001 From: Greg Donnelly Date: Tue, 2 Mar 2021 19:33:13 -0500 Subject: [PATCH 3/7] remove value passes tests --- .../zipcodewilmington/StringArrayUtils.java | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/StringArrayUtils.java b/src/main/java/com/zipcodewilmington/StringArrayUtils.java index 4bb191d..97fd839 100644 --- a/src/main/java/com/zipcodewilmington/StringArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/StringArrayUtils.java @@ -2,10 +2,7 @@ import jdk.nashorn.internal.ir.BlockLexicalContext; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.List; +import java.util.*; /** * Created by leon on 1/29/18. @@ -94,18 +91,35 @@ public static boolean isPangramic(String[] array) { * @param array array of String objects * @param value value to check array for * @return number of occurrences the specified `value` has occurred - */ // TODO + */ // WORKING public static int getNumberOfOccurrences(String[] array, String value) { - return 0; + int numOfTimes = 0; + for (int i = 0; i < array.length; i++) { + if (array[i].equalsIgnoreCase(value)) { + numOfTimes++; + } + } + return numOfTimes; } /** * @param array array of String objects * @param valueToRemove value to remove from array * @return array with identical contents excluding values of `value` - */ // TODO + */ // WORKING public static String[] removeValue(String[] array, String valueToRemove) { - return null; + ArrayList output = new ArrayList(); + int counter = 0; + for (int i = 0; i < array.length; i++) { + if (array[i].equals(valueToRemove)) { + continue; + } else { + output.add(array[i]); + counter++; + } + } + String[] outArr = output.toArray(new String[counter]); + return outArr; } /** From 7575e9fffa0ad400c1ec0d52e125c4ead19cde21 Mon Sep 17 00:00:00 2001 From: Greg Donnelly Date: Tue, 2 Mar 2021 23:09:01 -0500 Subject: [PATCH 4/7] remove consecutive duplicates tests passing --- .../com/zipcodewilmington/StringArrayUtils.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/StringArrayUtils.java b/src/main/java/com/zipcodewilmington/StringArrayUtils.java index 97fd839..a81f04d 100644 --- a/src/main/java/com/zipcodewilmington/StringArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/StringArrayUtils.java @@ -1,7 +1,9 @@ package com.zipcodewilmington; +import com.sun.org.apache.xerces.internal.xs.StringList; import jdk.nashorn.internal.ir.BlockLexicalContext; +import java.lang.reflect.Array; import java.util.*; /** @@ -125,9 +127,17 @@ public static String[] removeValue(String[] array, String valueToRemove) { /** * @param array array of chars * @return array of Strings with consecutive duplicates removes - */ // TODO + */ // WORKING public static String[] removeConsecutiveDuplicates(String[] array) { - return null; + ArrayList strList = new ArrayList(); + strList.add(array[0]); + for (int i = 1; i < array.length; i++) { + if (!array[i - 1].equals(array[i])) { + strList.add(array[i]); + } + } + String[] outStrArr = strList.toArray(new String[0]); + return outStrArr; } /** From 6310077dcba52eb2ef2dcde46c458ed61b5ecee9 Mon Sep 17 00:00:00 2001 From: Greg Donnelly Date: Tue, 2 Mar 2021 23:44:23 -0500 Subject: [PATCH 5/7] all tests pass except for pack consecutive duplicates --- .../java/com/zipcodewilmington/StringArrayUtils.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/StringArrayUtils.java b/src/main/java/com/zipcodewilmington/StringArrayUtils.java index a81f04d..e98cc1a 100644 --- a/src/main/java/com/zipcodewilmington/StringArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/StringArrayUtils.java @@ -49,9 +49,17 @@ public static String getSecondToLastElement(String[] array) { * @param array array of String objects * @param value value to check array for * @return true if the array contains the specified `value` - */ // TODO + */ // WORKING public static boolean contains(String[] array, String value) { - return false; + boolean presentOrNot = false; + for (int i = 0; i < array.length; i++) { + if (array[i].equals(value)) { + return true; + } else { + presentOrNot = false; + } + } + return presentOrNot; } /** From 4c8aacb80f122ec69702ba10b1334fd036482acb Mon Sep 17 00:00:00 2001 From: Greg Donnelly Date: Wed, 3 Mar 2021 17:27:21 -0500 Subject: [PATCH 6/7] is Pangram works! --- pom.xml | 12 ++++++ .../zipcodewilmington/StringArrayUtils.java | 41 ++++++++++++++----- 2 files changed, 42 insertions(+), 11 deletions(-) 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 e98cc1a..db9f2cb 100644 --- a/src/main/java/com/zipcodewilmington/StringArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/StringArrayUtils.java @@ -1,10 +1,9 @@ package com.zipcodewilmington; -import com.sun.org.apache.xerces.internal.xs.StringList; -import jdk.nashorn.internal.ir.BlockLexicalContext; - -import java.lang.reflect.Array; import java.util.*; +import java.util.stream.IntStream; + +import static java.lang.System.*; /** * Created by leon on 1/29/18. @@ -70,7 +69,7 @@ public static String[] reverse(String[] array) { List list = Arrays.asList(array); Collections.reverse(list); String[] revArr = list.toArray(array); - return revArr; + return revArr; } /** @@ -92,11 +91,33 @@ public static boolean isPalindromic(String[] array) { /** * @param array array of String objects * @return true if each letter in the alphabet has been used in the array - */ // TODO + */ // WORKING public static boolean isPangramic(String[] array) { - return false; + boolean isOrIsnt = false; + boolean[] mark = new boolean[26]; + String concatStr = ""; + for (int i = 0; i < array.length; i++) { + concatStr = concatStr.concat(array[i]); + } + concatStr = concatStr.toUpperCase(); + int index = 0; + for (int i = 0; i < concatStr.length(); i++) { + if ('A' <= concatStr.charAt(i) && concatStr.charAt(i) <= 'Z') { + index = concatStr.charAt(i) - 'A'; + } else { + continue; + } + mark[index] = true; + } + for (int i = 0; i <= 25; i++) { + if (mark[i] == false) { + isOrIsnt = false; + } else { + isOrIsnt = true; + } + } + return isOrIsnt; } - /** * @param array array of String objects * @param value value to check array for @@ -145,7 +166,7 @@ public static String[] removeConsecutiveDuplicates(String[] array) { } } String[] outStrArr = strList.toArray(new String[0]); - return outStrArr; + return outStrArr; } /** @@ -155,6 +176,4 @@ public static String[] removeConsecutiveDuplicates(String[] array) { public static String[] packConsecutiveDuplicates(String[] array) { return null; } - - } From ee2c21d9664d643f3774112f88da537c4b224c56 Mon Sep 17 00:00:00 2001 From: Greg Donnelly Date: Wed, 3 Mar 2021 21:39:27 -0500 Subject: [PATCH 7/7] all tests passing!!! --- .../zipcodewilmington/StringArrayUtils.java | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/StringArrayUtils.java b/src/main/java/com/zipcodewilmington/StringArrayUtils.java index db9f2cb..dfa7abc 100644 --- a/src/main/java/com/zipcodewilmington/StringArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/StringArrayUtils.java @@ -139,7 +139,7 @@ public static int getNumberOfOccurrences(String[] array, String value) { * @return array with identical contents excluding values of `value` */ // WORKING public static String[] removeValue(String[] array, String valueToRemove) { - ArrayList output = new ArrayList(); + ArrayList output = new ArrayList<>(); int counter = 0; for (int i = 0; i < array.length; i++) { if (array[i].equals(valueToRemove)) { @@ -158,7 +158,7 @@ public static String[] removeValue(String[] array, String valueToRemove) { * @return array of Strings with consecutive duplicates removes */ // WORKING public static String[] removeConsecutiveDuplicates(String[] array) { - ArrayList strList = new ArrayList(); + ArrayList strList = new ArrayList<>(); strList.add(array[0]); for (int i = 1; i < array.length; i++) { if (!array[i - 1].equals(array[i])) { @@ -172,8 +172,24 @@ public static String[] removeConsecutiveDuplicates(String[] array) { /** * @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 + */ // WORKING public static String[] packConsecutiveDuplicates(String[] array) { - return null; + ArrayList midList = new ArrayList<>(); + String strHolder = ""; + int counter = 0; + int compare = counter + 1; + while (counter < array.length) { + strHolder = strHolder.concat(array[counter]); + while (compare != array.length && array[counter].equals(array[compare])) { + strHolder = strHolder.concat(array[compare]); + compare++; + } + midList.add(strHolder); + strHolder = ""; + counter = compare; + compare++; + } + String[] outArr = midList.toArray(new String[0]); + return outArr; } }