From 3bd63aca8108ffe1198539c4b57b54d5e69551b3 Mon Sep 17 00:00:00 2001 From: KrYounger <35814586+xt0fer@users.noreply.github.com> Date: Tue, 3 Nov 2020 06:04:19 -0500 Subject: [PATCH 01/11] Setting up GitHub Classroom Feedback From ccbc9bd88583383a8805f8a005b7506f850bf3bf Mon Sep 17 00:00:00 2001 From: gunjan Date: Tue, 3 Nov 2020 06:27:26 -0500 Subject: [PATCH 02/11] Done till reverse --- .../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 4bcce66..e9b2056 100644 --- a/src/main/java/com/zipcodewilmington/StringArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/StringArrayUtils.java @@ -25,7 +25,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 +33,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 +42,13 @@ 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; + int counter=0; + for(int i=0 ;i < array.length ;i++) + { + if(array[i].contains(value)) + counter++; + } + return counter==0 ? false:true; } /** @@ -50,7 +56,17 @@ 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; + int lengthA = array.length; + + String[] reverseArray = new String[lengthA]; + int j=0; + for(int i=array.length-1 ;i >=0 ;i--) + { + reverseArray[j]=array[i]; + j++; + } + + return reverseArray; } /** From 9b5122b8060a584d8bf5293f60d2097a4dbb4d75 Mon Sep 17 00:00:00 2001 From: gunjan Date: Tue, 3 Nov 2020 15:31:00 -0500 Subject: [PATCH 03/11] Pending few methods --- .../zipcodewilmington/StringArrayUtils.java | 69 +++++++++++++++++-- 1 file changed, 63 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/StringArrayUtils.java b/src/main/java/com/zipcodewilmington/StringArrayUtils.java index e9b2056..c3b4b0a 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.Arrays; + /** * Created by leon on 1/29/18. */ @@ -42,13 +44,20 @@ public static String getSecondToLastElement(String[] array) { * @return true if the array contains the specified `value` */ // TODO public static boolean contains(String[] array, String value) { - int counter=0; + /* int counter=0; for(int i=0 ;i < array.length ;i++) { if(array[i].contains(value)) counter++; } - return counter==0 ? false:true; + return counter==0 ? false:true; */ + + for (String s : array) { + if (s == value) { + return true; + } + } + return false; } /** @@ -74,7 +83,9 @@ 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; + // reverse(array); + return Arrays.equals(reverse(array) , array); + } /** @@ -82,6 +93,17 @@ 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) { + /* StringBuilder storeString = new StringBuilder(); + for (int i = 0; i < array.length ; i++) { + storeString.append(array[i]); + } + // sort(array); + String sortString = storeString.toString().trim(); + for (String s:array){ + + } + // sortString.replaceAll("\\s " ,""); +*/ return false; } @@ -91,7 +113,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 counter=0; + for (String s : array) { + if (s == value) { + counter++; + } + } + return counter; } /** @@ -100,7 +128,19 @@ 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; + int arrayLength= array.length; + String[] storeAltered= new String[arrayLength-1]; + int j=0; + for (int i = 0; i < arrayLength ;) { + if(array[i] == valueToRemove) + i++; + else { + storeAltered[j] = array[i]; + j++; + i++; + } + } + return storeAltered; } /** @@ -108,7 +148,24 @@ 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; + + int arrayLength= array.length; + String[] storeAltered= new String[20]; + int j=0; + for (int i = 0; i < arrayLength ;) { + if (array[i] == array[i + 1]) + { + storeAltered[j] = array[i]; + j++; + i++; + } + else { + storeAltered[j] = array[i+1]; + i++; + } + + } + return storeAltered; } /** From 6120b219d86434b65f9bd0f9f8c9a8632e77b7dc Mon Sep 17 00:00:00 2001 From: gunjan Date: Wed, 4 Nov 2020 14:38:48 -0500 Subject: [PATCH 04/11] done with removeConsecutiveDuplicates --- .../zipcodewilmington/StringArrayUtils.java | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/StringArrayUtils.java b/src/main/java/com/zipcodewilmington/StringArrayUtils.java index c3b4b0a..6abe346 100644 --- a/src/main/java/com/zipcodewilmington/StringArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/StringArrayUtils.java @@ -83,7 +83,7 @@ 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) { - // reverse(array); + return Arrays.equals(reverse(array) , array); } @@ -149,23 +149,19 @@ public static String[] removeValue(String[] array, String valueToRemove) { */ // TODO public static String[] removeConsecutiveDuplicates(String[] array) { - int arrayLength= array.length; - String[] storeAltered= new String[20]; + String[] storeAltered= new String[array.length]; int j=0; - for (int i = 0; i < arrayLength ;) { - if (array[i] == array[i + 1]) - { + for (int i = 0; i < array.length ;i++) { + if (i==0 || !array[i].equals(array[i - 1]) ) { storeAltered[j] = array[i]; - j++; - i++; + j++; + } } - else { - storeAltered[j] = array[i+1]; - i++; - } - + String[] output = new String[j]; + for(int i = 0; i < j; i++){ + output[i] = storeAltered[i]; } - return storeAltered; + return output; } /** From 851bb841af8183e8629307d1c441383ccf8a19b1 Mon Sep 17 00:00:00 2001 From: gunjan Date: Wed, 4 Nov 2020 20:12:25 -0500 Subject: [PATCH 05/11] FINALLY DONE with Pangramic --- .../zipcodewilmington/StringArrayUtils.java | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/StringArrayUtils.java b/src/main/java/com/zipcodewilmington/StringArrayUtils.java index 6abe346..8526d0c 100644 --- a/src/main/java/com/zipcodewilmington/StringArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/StringArrayUtils.java @@ -93,18 +93,29 @@ 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) { - /* StringBuilder storeString = new StringBuilder(); + + + StringBuilder storeString = new StringBuilder(); for (int i = 0; i < array.length ; i++) { storeString.append(array[i]); } - // sort(array); - String sortString = storeString.toString().trim(); - for (String s:array){ + String sortString = storeString.toString().replaceAll(" ",""); + char[] storeAltered = new char[sortString.length()]; + int j=1; + char[] chars=sortString.toLowerCase().toCharArray(); + Arrays.sort(chars); + + storeAltered[0]=chars[0]; + for (int i = 1; i < chars.length ;i++) { + if ( !(chars[i] == chars[i - 1])) { + storeAltered[j] = chars[i]; + j++; + } } - // sortString.replaceAll("\\s " ,""); -*/ - return false; + String finalString=String.valueOf(storeAltered).trim(); + return finalString.equals("abcdefghijklmnopqrstuvwxyz"); + //return true; } /** @@ -169,6 +180,8 @@ public static String[] removeConsecutiveDuplicates(String[] array) { * @return array of Strings with each consecutive duplicate occurrence concatenated as a single string in an array of Strings */ // TODO public static String[] packConsecutiveDuplicates(String[] array) { + + return null; } From 68b586b86712047cdaa112333e89ed78a0ccebb0 Mon Sep 17 00:00:00 2001 From: gunjan Date: Thu, 5 Nov 2020 07:31:48 -0500 Subject: [PATCH 06/11] Finally done --- .../zipcodewilmington/StringArrayUtils.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/zipcodewilmington/StringArrayUtils.java b/src/main/java/com/zipcodewilmington/StringArrayUtils.java index 8526d0c..2bdb7ff 100644 --- a/src/main/java/com/zipcodewilmington/StringArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/StringArrayUtils.java @@ -180,10 +180,31 @@ public static String[] removeConsecutiveDuplicates(String[] array) { * @return array of Strings with each consecutive duplicate occurrence concatenated as a single string in an array of Strings */ // TODO public static String[] packConsecutiveDuplicates(String[] array) { + String[] buffer = new String[array.length]; + String lastSeen = array[0]; + String stringToAdd = ""; + int outputLength = 0; - return null; + for(int i = 0; i < array.length; i++){ + if (array[i].equals(lastSeen)) + stringToAdd += lastSeen; + else { + buffer[outputLength++] = stringToAdd; + lastSeen = array[i]; + stringToAdd = array[i]; + } + } + buffer[outputLength++] = stringToAdd; + + //Creating output with the new size array based on result. + String[] output = new String[outputLength]; + for(int i = 0; i < outputLength; i++){ + output[i] = buffer[i]; + } + return output; } + } From 68a8f504b2268071d99cc9edaa34faac3d5bb09d Mon Sep 17 00:00:00 2001 From: gunjan Date: Mon, 9 Nov 2020 07:26:17 -0500 Subject: [PATCH 07/11] Redid Palindromic --- .../zipcodewilmington/StringArrayUtils.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/StringArrayUtils.java b/src/main/java/com/zipcodewilmington/StringArrayUtils.java index 2bdb7ff..6e301cb 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 com.sun.deploy.security.SelectableSecurityManager; + import java.util.Arrays; /** @@ -74,7 +76,7 @@ public static String[] reverse(String[] array) { reverseArray[j]=array[i]; j++; } - + // reverseArray.equals(array); return reverseArray; } @@ -83,11 +85,25 @@ 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) { + int j = array.length-1;; + for (int i = 0; i < array.length;) { + { + if(array[i].equals(array[j])) + { + i++; + j--; + } + else return false; + } - return Arrays.equals(reverse(array) , array); + } + // return reverseArray.equals(array); + return true; + // return Arrays.equals(reverse(array) , array); } + /** * @param array array of String objects * @return true if each letter in the alphabet has been used in the array From a1eee490b32fd3a85a55e98cd768c8f1a4e6d0ff Mon Sep 17 00:00:00 2001 From: gunjan Date: Thu, 24 Dec 2020 11:56:07 -0500 Subject: [PATCH 08/11] palindrome done in 3 methods --- .../zipcodewilmington/StringArrayUtils.java | 31 +++++++++++-------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/StringArrayUtils.java b/src/main/java/com/zipcodewilmington/StringArrayUtils.java index 6e301cb..f1e6d7d 100644 --- a/src/main/java/com/zipcodewilmington/StringArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/StringArrayUtils.java @@ -85,22 +85,27 @@ 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) { - int j = array.length-1;; - for (int i = 0; i < array.length;) { - { - if(array[i].equals(array[j])) - { - i++; - j--; - } - else return false; - } + //Method one , use reverse method from above and check if Arrays.equals() + //String[] reversedArray = reverse(array); + //return Arrays.equals(reversedArray,array); - } - // return reverseArray.equals(array); - return true; + //Method 2 , use Arrays,equal and reverse in build method to check if they are equal // return Arrays.equals(reverse(array) , array); + + + //Method 3 - to work with same array and divide by half to see if its same from left-right and right-left + Boolean flag=true; + int n=array.length; + for(int i=0;i< n/2 ;i++) + { + if(array[i] != array[n-1-i]) + { + flag = false; + break; + } + } + return flag; } From a42e6f39a960cc3926d4b82a93b6b47eae9790f2 Mon Sep 17 00:00:00 2001 From: gunjan Date: Thu, 24 Dec 2020 13:26:27 -0500 Subject: [PATCH 09/11] redid panagramic in another method --- .../zipcodewilmington/StringArrayUtils.java | 100 ++++++++++++------ .../zipcodewilmington/IsPalindromicTest.java | 6 ++ .../zipcodewilmington/IsPangramicTest.java | 2 +- 3 files changed, 76 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/StringArrayUtils.java b/src/main/java/com/zipcodewilmington/StringArrayUtils.java index f1e6d7d..4872e23 100644 --- a/src/main/java/com/zipcodewilmington/StringArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/StringArrayUtils.java @@ -29,7 +29,7 @@ public static String getSecondElement(String[] array) { * @return last element in specified array */ // TODO public static String getLastElement(String[] array) { - return array[array.length-1]; + return array[array.length - 1]; } /** @@ -37,7 +37,7 @@ public static String getLastElement(String[] array) { * @return second to last element in specified array */ // TODO public static String getSecondToLastElement(String[] array) { - return array[array.length-2]; + return array[array.length - 2]; } /** @@ -70,13 +70,12 @@ public static String[] reverse(String[] array) { int lengthA = array.length; String[] reverseArray = new String[lengthA]; - int j=0; - for(int i=array.length-1 ;i >=0 ;i--) - { - reverseArray[j]=array[i]; - j++; + int j = 0; + for (int i = array.length - 1; i >= 0; i--) { + reverseArray[j] = array[i]; + j++; } - // reverseArray.equals(array); + // reverseArray.equals(array); return reverseArray; } @@ -95,12 +94,11 @@ public static boolean isPalindromic(String[] array) { //Method 3 - to work with same array and divide by half to see if its same from left-right and right-left - Boolean flag=true; - int n=array.length; - for(int i=0;i< n/2 ;i++) - { - if(array[i] != array[n-1-i]) - { + Boolean flag = true; + int n = array.length; + int arraymid = n / 2; + for (int i = 0; i < arraymid; i++) { + if (array[i] != array[n - 1 - i]) { flag = false; break; } @@ -115,30 +113,70 @@ public static boolean isPalindromic(String[] array) { */ // TODO public static boolean isPangramic(String[] array) { - + //Method 1 , Append the array contents in StringBuilder and after removing spaces ,sort it , once sorted check if it matches to a-z StringBuilder storeString = new StringBuilder(); - for (int i = 0; i < array.length ; i++) { + for (int i = 0; i < array.length; i++) { storeString.append(array[i]); } - String sortString = storeString.toString().replaceAll(" ",""); - char[] storeAltered = new char[sortString.length()]; - int j=1; - char[] chars=sortString.toLowerCase().toCharArray(); - Arrays.sort(chars); - - storeAltered[0]=chars[0]; - for (int i = 1; i < chars.length ;i++) { - if ( !(chars[i] == chars[i - 1])) { - storeAltered[j] = chars[i]; - j++; - } + String sortString = storeString.toString().replaceAll(" ", ""); +// char[] storeAltered = new char[sortString.length()]; +// int j=1; +// char[] chars=sortString.toLowerCase().toCharArray(); +// Arrays.sort(chars); +// +// storeAltered[0]=chars[0]; +// for (int i = 1; i < chars.length ;i++) { +// if ( !(chars[i] == chars[i - 1])) { +// storeAltered[j] = chars[i]; +// j++; +// } +// } +// String finalString=chars.toString().trim();//String.valueOf(storeAltered).trim(); +// return finalString.equals("abcdefghijklmnopqrstuvwxyz"); +// +//METHOD 2 - set flag to true for the letter found and if any flg is false, return false. + // Create a hash table to mark the + // characters present in the string + // By default all the elements of + // mark would be false. + boolean[] mark = new boolean[26]; + + // For indexing in mark[] + int index = 0; + String str = sortString; + // Traverse all characters + for (int i = 0; i < str.length(); i++) { + // If uppercase character, subtract 'A' + // to find index. + if (str.charAt(i) >= 'A' && str.charAt(i) <= 'Z') + index = str.charAt(i) - 'A'; + + // If lowercase character, subtract 'a' + // to find index. + else if (str.charAt(i) >='a' && str.charAt(i) <= 'z') + + index = str.charAt(i) - 'a'; + + // If this character is other than english + // lowercase and uppercase characters. + else + continue; + mark[index] = true; } - String finalString=String.valueOf(storeAltered).trim(); - return finalString.equals("abcdefghijklmnopqrstuvwxyz"); - //return true; + + // Return false if any character is unmarked + for (int i = 0; i <= 25; i++) + if (mark[i] == false) + return (false); + + // If all characters were present + return (true); } + + + /** * @param array array of String objects * @param value value to check array for diff --git a/src/test/java/com/zipcodewilmington/IsPalindromicTest.java b/src/test/java/com/zipcodewilmington/IsPalindromicTest.java index 5261d05..0ec1c3f 100644 --- a/src/test/java/com/zipcodewilmington/IsPalindromicTest.java +++ b/src/test/java/com/zipcodewilmington/IsPalindromicTest.java @@ -29,6 +29,12 @@ public void testIsPalindromic3() { boolean outcome = StringArrayUtils.isPalindromic(array); Assert.assertFalse(outcome); } + @Test + public void testIsPalindromic4() { + String[] array = {"Is this a plaindrome?", "This is not a plaindrome", "This is not a plaindrome", "Is this a plaindrome?"}; + boolean outcome = StringArrayUtils.isPalindromic(array); + Assert.assertTrue(outcome); + } } diff --git a/src/test/java/com/zipcodewilmington/IsPangramicTest.java b/src/test/java/com/zipcodewilmington/IsPangramicTest.java index 70677d7..70688dc 100644 --- a/src/test/java/com/zipcodewilmington/IsPangramicTest.java +++ b/src/test/java/com/zipcodewilmington/IsPangramicTest.java @@ -14,7 +14,7 @@ public void testIsPangramic1() { @Test public void testIsPangramic2() { - String[] array = {"The", "quick", "onyx", "goblin", "jumps", "over", "the", "lazy", "dwarf"}; + String[] array = {"The", "quick*^^&*&^", "onyx", "goblin", "jumps", "over", "the", "lazy", "dwarf"}; boolean outcome = StringArrayUtils.isPangramic(array); Assert.assertTrue(outcome); } From aa8b8b1f1407d8baf3e8c36498dcb574b7fb8ed8 Mon Sep 17 00:00:00 2001 From: gunjan Date: Thu, 24 Dec 2020 13:48:46 -0500 Subject: [PATCH 10/11] few changes --- src/main/java/com/zipcodewilmington/StringArrayUtils.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/zipcodewilmington/StringArrayUtils.java b/src/main/java/com/zipcodewilmington/StringArrayUtils.java index 4872e23..e7c70dc 100644 --- a/src/main/java/com/zipcodewilmington/StringArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/StringArrayUtils.java @@ -201,13 +201,13 @@ public static String[] removeValue(String[] array, String valueToRemove) { int arrayLength= array.length; String[] storeAltered= new String[arrayLength-1]; int j=0; - for (int i = 0; i < arrayLength ;) { + for (int i = 0; i < arrayLength ;i++) { if(array[i] == valueToRemove) - i++; + continue; else { storeAltered[j] = array[i]; j++; - i++; + } } return storeAltered; From b1634f06c4b9c848161e0a2ee0a94c27ebf53739 Mon Sep 17 00:00:00 2001 From: gunjan Date: Thu, 24 Dec 2020 14:02:46 -0500 Subject: [PATCH 11/11] few changes --- src/main/java/com/zipcodewilmington/StringArrayUtils.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/zipcodewilmington/StringArrayUtils.java b/src/main/java/com/zipcodewilmington/StringArrayUtils.java index e7c70dc..4978e47 100644 --- a/src/main/java/com/zipcodewilmington/StringArrayUtils.java +++ b/src/main/java/com/zipcodewilmington/StringArrayUtils.java @@ -227,6 +227,7 @@ public static String[] removeConsecutiveDuplicates(String[] array) { j++; } } + //Creating output with the new size array based on result. String[] output = new String[j]; for(int i = 0; i < j; i++){ output[i] = storeAltered[i];